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

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

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

زمان مطالعه

5 دقیقه

بازدید

1339

پرسش و پاسخ

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],

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