
اعتبارسنجی کد ملی در لاراول در برخی از پروژه های مورد نیاز می باشد و باید صحت کد ملی سنجیده شود در این مقاله به سادگی نحوه ساخت یک Rule برای سنجیدن کد ملی را آموزش داده ایم
ما فرض را بر آماده بودن پروژه گرفته ایم. در مرحله اول شما باید یک قانون (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],
به همین راحتی!!! لطفا این آموزش را با دوستان خود به اشتراک بگذارید امید است در آینده آموزشهای بیشتری در دسته لاراول جاب تیم، منتشر کنیم
