va/cutlet-helper

用于在 Laravel 应用中使用辅助函数和伊朗验证器的软件包。

v1.5.5 2023-05-12 13:59 UTC

README

Latest Version on Packagist GitHub issues GitHub stars GitHub forks Total Downloads GitHub license

快速链接

安装

composer require va/cutlet-helper

发布配置文件

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

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

integerToken($length = 5) // Generate integer token or code

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

digitsToEastern($number) // Covert a Weatern number(English) or digits to Eastern number(Persian or Arabic)

easternToDigits($number) // Covert a Eastern number(Persion, Arabic) to Eastern number(English)

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

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

prepareSlug(slug, title, model) // generate clean slug from title and checks slug unique in specific model

辅助函数使用方法

// With Facade format:

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


// 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);

包中存在的验证器

  • 国家代码(کد ملی)
  • 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',
]);

类别使用方法

本软件包为以下表结构提供类别处理功能,使用 Category 模型

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

categorizables => category_id, categorizable_id, categorizable_type

在类别创建模板中使用

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

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

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

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

在类别编辑模板中使用

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

  • parent:包含当前类别 parent_id

  • category:包含当前类别_id

在包含类别的特定创建模板中使用

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

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

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

  • page:包含当前标签的 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 或更高版本