تاریخ امروز:2 دی 1403
National code be assured resized

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

با سلام به همه‌ی دوستان

ابتدا با دستور زیر یه Validation جدید می‌سازیم:

php artisan make:rule Nationalcode

حالا میریم به آدرس :  app/Rules/Nationalcode.php و کد زیر رو توش قرار می‌دیم:

<?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 'کد ملی اشتباه است';
    }
}

حالا جایی که دارین ولیدیت می‌کنید اینجوری بزنید:

ابتدای صفحه:

use App\Rules\Nationalcode;

 

بعد هم که اینجوری صداش میزنیم:

 'codemeli' => ['required', new Nationalcode],

 

2 Comments

  1. آواتار محمدمحمد پاسخ

    بسیار عالی و با توضیح ساده ممنونم رفیق

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *