اعتبارسنجی کد ملی در لاراول

با تعریف rule در فریمورک لاراول می توانید ورودی کد ملی در فرم های ارسالی توسط بازدیدکنندگان سایت را چک و از صحت آن اطلاع پیدا کنید

بهزاد میرزازاده بهزاد میرزازاده

زمان مطالعه

5 دقیقه

بازدید

539

پرسش و پاسخ

0
اعتبارسنجی کد ملی در لاراول

ما فرض را بر آماده بودن پروژه گرفته ایم. در مرحله اول شما باید یک قانون (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],

به همین راحتی!!! امید است در آینده آموزشهای بیشتری در دسته  لاراول جاب تیم، منتشر کنیم