sinara贾博pour1998/alpha-helper

提供laravel中的辅助函数和验证器。

v3.1 2024-06-11 08:21 UTC

This package is auto-updated.

Last update: 2024-09-11 09:01:21 UTC


README

GitHub issues GitHub stars GitHub forks GitHub license

快速链接

安装


composer require sinarajabpour1998/alpha-helper

发布配置文件


php artisan vendor:publish --tag=alpha-helper

包中存在的辅助函数和外观

1. integerToken($length = 5) : Generate integer token or code

2. stringToken($length = 16, $characters = '2345679acdefghjkmnpqrstuvwxyz') : Generate string token or code

3. digitsToEastern($number) : Covert a Weatern number(English) or digits to Eastern number(Persian or Arabic)

4. easternToDigits($number) : Covert a Eastern number(Persion, Arabic) to Eastern number(English)

5. isActive($key, $activeClassName = 'active') : Check the route name(string) or route names(array) is avtive or no for css classes

6. prepareInteger(input: string or integer) : removes `,` from integer (can be used in request for prices)

7. prepareSlug(slug, title, model) : generate clean slug from title and checks slug unique in specific model

8. encryptString(string data) : encrypts data using Crypt and returns encrypted data

9. decryptString(string encryptedString) : decrypts data using Crypt and returns decrypted data

10. makeHash(string) : make hash using sha512 from string

11. getSettingsKey(string key) : get settings specific key, returns a value, you must have a settings model with key-value structure

12. isMobile(string) : check if string is a valid mobile number

..

辅助函数使用

## With Facade format:

AlphaHelper::integerToken(length: 10);
AlphaHelper::stringToken(length: 32, characters: '2345679acdefghjkmnpqrstuvwxyz');
AlphaHelper::digitsToEastern(number: 1375);
AlphaHelper::easternToDigits(number: ۱۳۷۵);
AlphaHelper::isActive(key: ['posts.index', 'posts.create', 'posts.edit'], activeClassName: 'acive');
AlphaHelper::prepareInteger(input: string or integer);
AlphaHelper::prepareSlug(slug, title, model);
AlphaHelper::encryptString(data [string type]);
AlphaHelper::decryptString(data [string type]);
AlphaHelper::makeHash(data [string type]);
AlphaHelper::getSettingsKey(key [string type]);
AlphaHelper::isMobile(string);


## Call a helper function:

integerToken(length: 10)
stringToken(length: 32, characters: '2345679acdefghjkmnpqrstuvwxyz');
digitsToEastern(number: 1375);
easternToDigits(number: ۱۲۳۴۵);
isActive(key: ['posts.index', 'posts.create', 'posts.edit'], activeClassName: 'acive');
prepareInteger(input: string or integer);
prepareSlug(slug, title, model);
encryptString(data [string type]);
decryptString(data [string type]);
makeHash(data [string type]);
getSettingsKey(string key);
isMobile(string);

包中存在的验证器

  • 国家代码(کد ملی)
  • IBAN(شماره شبا)
  • 借记卡(شماره کارت بانکی)
  • 邮政编码(کد پستی)
  • Shenase Meli(شناسه ملی)
  • 手机(موبایل)
  • 电话(تلفن ثابت)
  • 唯一动态(تشخیص یکتایی دو ستونه)
  • 波斯字母(الفبای فارسی)
  • 波斯数字(اعداد فارسی)
  • 无特殊字符(بدون کاراکتر خاص)
  • 地址(آدرس)

验证器使用

national_code

验证伊朗国家代码的规则 (如何计算)

return [
    'code' => 'required|national_code'
];

For national_code with exeptions code or valid codes for foreign national codes
First step for use this parameters is migrate, php artisan migrate, and save your exeptions in this table 
but if you want to use another table you can set your table and column
return [
    'code' => 'required|national_code:national_code_exceptions' // This is default table that contains exeption codes
    -- OR -- 
    'code' => 'required|national_code:national_code_exceptions,code' // Second parameter is column of exeption table
];

-- OR --

return [
    'code' => ['required', 'national_code']
];

-- OR --

$validatedData = $request->validate([
    'code' => 'national_code',
]);

iban

验证IBAN(国际银行账户号码)的规则,在伊朗称为Sheba。 (如何计算)

return [
    'account' => 'iban'
];

-- OR --

Add `false` optional parameter after `iban`, If IBAN doesn't begin with `IR`, so the validator will add `IR` as default to the account number:
return [
    'account' => 'iban:false'
];

-- OR --

If you want to validate non Iranian IBAN, add the 2 letters of country code after `false` optional parameter:
return [
    'account' => 'iban:false,DE'
];

debit_card

验证伊朗借记卡的规则。 (如何计算)

return [
    'code' => 'required|debit_card'
];

-- OR --

return [
    'code' => ['required', 'debit_card']
];

-- OR --

$validatedData = $request->validate([
    'code' => 'debit_card',
]);

-- OR --

You can add an optional parameter if you want to validate a card from a specific bank:
return [
    'code' => 'required|debit_card:bmi'
];

List of the bank codes:

 - bmi (بانک ملی)
 - banksepah (بانک سپه)
 - edbi (بانک توصعه صادرات)
 - bim (بانک صنعت و معدن)
 - bki (بانک کشاورزی)
 - bank-maskan (بانک مسکن)
 - postbank (پست بانک ایران)
 - ttbank (بانک توسعه تعاون)
 - enbank (بانک اقتصاد نوین)
 - parsian-bank (بانک پارسیان)
 - bpi (بانک پاسارگاد)
 - karafarinbank (بانک کارآفرین)
 - sb24 (بانک سامان)
 - sinabank (بانک سینا)
 - sbank (بانک سرمایه)
 - shahr-bank (بانک شهر)
 - bank-day (بانک دی)
 - bsi (بانک صادرات)
 - bankmellat (بانک ملت)
 - tejaratbank (بانک تجارت)
 - refah-bank (بانک رفاه)
 - ansarbank (بانک انصار)
 - mebank (بانک مهر اقتصاد)

postal_code

return [
    'code' => 'required|postal_code'
];

--OR--

return [
    'code' => ['required, 'postal_code']
];

--OR--

$validatedData = $request->validate([
    'code' => 'postal_code',
]);

shenase_meli

验证伊朗Shenase Meli的规则 (如何计算)

return [
    'code' => 'required|shenase_meli'
];

--OR--

return [
    'code' => ['required, 'shenase_meli']
];

--OR--

$validatedData = $request->validate([
    'code' => 'shenase_meli',
]);

mobile

return [
    'mobile' => 'required|mobile'
];

--OR--

return [
    'mobile' => ['required, 'mobile']
];

--OR--

$validatedData = $request->validate([
    'mobile' => 'mobile',
]);

用户名(有效字符:英文字母、数字和 _)

return [
    'username' => 'required|username'
];

--OR--

return [
    'username' => ['required, 'username']
];

--OR--

$validatedData = $request->validate([
    'username' => 'username',
]);

phone

return [
    'phone' => 'required|phone'
];

--OR--

return [
    'phone' => ['required, 'phone']
];

--OR--

$validatedData = $request->validate([
    'phone' => 'phone',
]);

unique_dynamic (table_name, target_column, extra_column, extra_column_value, ignore_column, ignore_column_value)

return [
    // Without ignore for create user, 4 parameters
    // If we want to check a username is unique in users table when type of this useranme equal student
    // If username = 'v.ashourzadeh' and type = 'student' you can't create username = 'v.ashourzadeh' but create username = 'v.ashourzadeh' if type = 'teacher'
    'username' => 'required|unique_dynamic:users,username,type,student'

    // With ignore for edit user, 6 parameters
    // If we want to check a username is unique in users table and ignore this for special id, for example id = 5
    // If username = 'v.ashourzadeh' and type = 'student' you can set username = 'v.ashourzadeh' when id = 5
    'username' => 'required|unique_dynamic:users,username,type,student,id,5'
];

--OR--

return [
    // Without ignore for create user, 4 parameters
    'username' => ['required, 'unique_dynamic:users,username,type,student']

    // With ignore for edit user, 6 parameter
    'username' => ['required, 'unique_dynamic:users,username,type,student,id,5']
];

--OR--

$validatedData = $request->validate([
    // Without ignore for create user, 4 parameters
    'username' => 'unique_dynamic:users,username,type,student',
    // With ignore for edit user, 6 parameter
    'username' => 'unique_dynamic:users,username,type,student,id,5',
]);

persian_alphabetic

return [
    'code' => 'required|persian_alphabetic'
];

--OR--

return [
    'code' => ['required, 'persian_alphabetic']
];

--OR--

$validatedData = $request->validate([
    'code' => 'persian_alphabetic',
]);

persian_number

return [
    'code' => 'required|persian_number'
];

--OR--

return [
    'code' => ['required, 'persian_number']
];

--OR--

$validatedData = $request->validate([
    'code' => 'persian_number',
]);

no_special_chars

return [
    'name' => 'required|no_special_chars'
];

--OR--

return [
    'name' => ['required, 'no_special_chars']
];

--OR--

$validatedData = $request->validate([
    'name' => 'no_special_chars',
]);

address

return [
    'address' => 'required|address'
];

--OR--

return [
    'address' => ['required, 'address']
];

--OR--

$validatedData = $request->validate([
    'address' => 'address',
]);

分类使用

此包为以下表结构提供分类处理,使用 Category 模型

categories => id, slug, title, category_type, description, parent_id, creator_id

categorizables => category_id, categorizable_id, categorizable_type

在分类创建blade中的使用

<x-category-options page="create" type="serviceCategory"></x-category-options>

  • 此标签生成选择选项,因此您可以在select或select2标签中使用它。

  • type:在表结构中使用的分类类型,例如postCategory

  • page:包含当前标签的blade页面

在分类编辑blade中的使用

<x-category-options page="edit" type="serviceCategory" parent="{{ $category->parent_id }}" category="{{ $category->id }}"></x-category-options>

  • parent:包含当前分类parent_id

  • category:包含当前category_id

在包含分类的特定创建blade中的使用

<x-category-checkboxes page="create" type="serviceCategory"></x-category-checkboxes>

  • 此标签生成复选框,因此您可以在任何div标签中使用它。

  • type:在表结构中使用的分类类型,例如postCategory

  • page:包含当前标签的blade页面

在包含分类的特定编辑blade中的使用

<x-category-checkboxes type="serviceCategory" page="edit" checked="{{ $service->categories->pluck('id') }}"></x-category-checkboxes>

  • checked:包含与主对象同步的分类的数组,例如services->categories

需求

  • PHP v7.0或更高版本
  • Laravel v7.0或更高版本