در برخی از پروژه های مورد نیاز می باشد و باید صحت کد ملی سنجیده شود در این مقاله به سادگی نحوه ساخت یک Rule برای سنجیدن کد ملی را آموزش داده ایم
زمانی که در مورد فریم ورکهای توسعه وب اپلیکیشن صحبت میشود، همیشه نام لاراول به میان میآید. از لاراول میتوان به عنوان محبوبترین فریم ورک زبان برنامه نویسی PHP یاد کرد. این فریم ورک توانسته است در زمانی کوتاه، به اولین گزینهی توسعه دهندگان برای توسعه برنامههای پیچیده تحت وب تبدیل شود.
لاراول فریم ورکی مبتنی بر معماری MVC است که به صورت رایگان و متن باز ارائه شده است. این فریم ورک امکانات هوشمندی در اختیار برنامه نویسان قرار میدهد و برنامه نویسی را برای آنها لذت بخشتر میکند.
اعتبارسنجی فرم به چه معنا است؟
به هر وبسایت محبوبی با یک فرم ثبت نام بروید متوجه خواهید شد که وقتی دادهها را در قالب مورد انتظار آنها وارد میکنید، نوعی بازخورد به شما نشان میدهد. بدین ترتیب با پیامهایی مانند موارد زیر مواجه میشوید:
- «این فیلد الزامی است» (نمیتوانید این فیلد را خالی بگذارید)
- «شماره تلفن خود را در قالب xxx-xxxx وارد کنید» (یعنی شماره تلفنی که وارد میکنید باید ابتدا سه رقم سپس یک خط تیره و سپس چهار رقم باشد)
- «لطفاً یک نشانی ایمیل معتبر وارد کنید.» (در صورتی استفاده میشود که ورودی شما در قالب somebody@example.com نباشد)
- «رمز عبور شما باید بین 8 تا 30 کاراکتر طول داشته باشد و شامل دستکم یک حرف بزرگ، یک نماد و یک عدد باشد.»
این کار «اعتبارسنجی فرم» (form validation) نام دارد. زمانی که دادهها را وارد میکنید، وب اپلیکیشن بررسی میکند تا ببیند آیا دادهها صحیح هستند یا خیر. اگر اطلاعات درست باشند، اپلیکیشن امکان ارسال دادهها به سرور را فراهم میکند که در آنجا به طور معمول در یک پایگاه داده ذخیره میشود، اما اگر اطلاعات صحیح نباشند، پیام خطایی نمایش میدهد که در مورد آن چه باید اصلاح شود اطلاعاتی را ارائه میکند.
ما فرض را بر آماده بودن پروژه گرفته ایم. در مرحله اول شما باید یک قانون (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; پس کد ما در این فایل به این صورت خواهد بود =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],
به همین راحتی!!! لطفا این آموزش را با دوستان خود به اشتراک بگذارید امید است در آینده آموزشهای بیشتری در دسته لاراول جاب تیم، منتشر کنیم
منبع: جاب تیم
- ۰۰/۱۰/۰۸