ما فرض را بر آماده بودن پروژه گرفته ایم. در مرحله اول شما باید یک قانون (Rule) درست کنید با استفاده از دستور :
php artisan make:rule Nationalcode
با اجرای این کد یک فایل در مسیر app/Rules/Nationalcode.php ساخته می شود.
در این فایل در قسمت passes کد ذیل را وارد می کنیم
if(!preg_match('/^[0-9]{10}$/',$value))
return false;
for($i=0;$i<10;$i++)
if(preg_match('/^'.$i.'{10}$/',$value))
return false;
for($i=0,$sum=0;$i<9;$i++)
$sum+=((10-$i)*intval(substr($value, $i,1)));
$ret=$sum%11;
$parity=intval(substr($value, 9,1));
if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
return true;
return false;
پس کد ما در این فایل به این صورت خواهد بود
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Nationalcode implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if(!preg_match('/^[0-9]{10}$/',$value))
return false;
for($i=0;$i<10;$i++)
if(preg_match('/^'.$i.'{10}$/',$value))
return false;
for($i=0,$sum=0;$i<9;$i++)
$sum+=((10-$i)*intval(substr($value, $i,1)));
$ret=$sum%11;
$parity=intval(substr($value, 9,1));
if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
return true;
return false;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'کد ملی اشتباه است';
}
}
بیشتر بخوانید : سئو سایت
حالا در کنترلری که عملیات اعتبارسنجی رو انجام میدید اول باید این Rule رو فراخوانی کنید
use App\Rules\Nationalcode;
و در داخل validation نیز بدین صورت استفاده کنید
'codemeli' => ['required', new Nationalcode],
به همین راحتی!!! امید است در آینده آموزشهای بیشتری در دسته لاراول جاب تیم، منتشر کنیم