در طراحی یک وب اپلیکیشن بکارگیری Validation بخش اجتناب ناپذیر طراحی اصولی و ایمن آن برنامه خواهد بود و بواسطه آن از صحت داده های ورودی اطمینان خاطر حاصل می گردد.

در لاراول بصورت پیش فرض از کلاس ValidatesRequests برای اعتبار سنجی درخواست های HTTP دریافتی از فرم ها استفاده می گردد.

رول های قابل پشتیبانی برای Validation در لاراول

لاراول همیشه خطاهای موجود در مقادیر Session ها را بررسی و در صورت وجود خطا آنها را به صورت خودکار نمایش می دهد. بنابراین با توجه به این نکته، ضروری است همیشه متغییر $errors در همه view ها بررسی شود، و شما این امکان را خواهید داشت که همیشه و به راحتی به متغیر $errors دسترسی داشته باشید.
متغیر $errors توسط یک instance از Illuminate\Support\MessageBag و بصورت زیر در فایل View در دسترس شما خواهد بود.

[pastacode lang=”markup” manual=”%40if%20(count(%24errors)%20%3E%200)%0A%20%20%20%3Cdiv%20class%20%3D%20%22alert%20alert-danger%22%3E%0A%20%20%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%20%20%20%40foreach%20(%24errors-%3Eall()%20as%20%24error)%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%7B%7B%20%24error%20%7D%7D%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%40endforeach%0A%20%20%20%20%20%20%3C%2Ful%3E%0A%20%20%20%3C%2Fdiv%3E%0A%40endif” message=”” highlight=”” provider=”manual”/]

برای بررسی بهتر توضیحات بالا به ذکر یک مثال کاربردی می پردازیم، برای این منظور ابتدا کنترلر ValidationController با خط فرمان زیر ایجاد می کنیم.

[pastacode lang=”markup” manual=”php%20artisan%20make%3Acontroller%20ValidationController%20–plain%0A” message=”” highlight=”” provider=”manual”/]

بعد از اجرای خط فرمان بالا فایل ValidationController.php ایجاد می شود آن را بصورت زیر تغییر دهید.

[pastacode lang=”php” manual=”%3C%3Fphp%0A%0Anamespace%20App%5CHttp%5CControllers%3B%0A%0Ause%20Illuminate%5CHttp%5CRequest%3B%0Ause%20App%5CHttp%5CRequests%3B%0Ause%20App%5CHttp%5CControllers%5CController%3B%0A%0Aclass%20ValidationController%20extends%20Controller%20%7B%0A%20%20%20public%20function%20showform()%20%7B%0A%20%20%20%20%20%20return%20view(‘login’)%3B%0A%20%20%20%7D%0A%20%20%20public%20function%20validateform(Request%20%24request)%20%7B%0A%20%20%20%20%20%20print_r(%24request-%3Eall())%3B%0A%20%20%20%20%20%20%24this-%3Evalidate(%24request%2C%5B%0A%20%20%20%20%20%20%20%20%20’username’%3D%3E’required%7Cmax%3A8’%2C%0A%20%20%20%20%20%20%20%20%20’password’%3D%3E’required’%0A%20%20%20%20%20%20%5D)%3B%0A%20%20%20%7D%0A%7D” message=”app/Http/Controllers/ValidationController.php” highlight=”” provider=”manual”/]

حال فایل login.blade.php در مسیر resources/views ایجاد نموده و محتویات آن را بصورت زیر تغییر می دهیم.

[pastacode lang=”markup” manual=”%3Chtml%3E%0A%20%20%20%0A%20%20%20%3Chead%3E%0A%20%20%20%20%20%20%3Ctitle%3ELogin%20Form%3C%2Ftitle%3E%0A%20%20%20%3C%2Fhead%3E%0A%0A%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%40if%20(count(%24errors)%20%3E%200)%0A%20%20%20%20%20%20%20%20%20%3Cdiv%20class%20%3D%20%22alert%20alert-danger%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40foreach%20(%24errors-%3Eall()%20as%20%24error)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%7B%7B%20%24error%20%7D%7D%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40endforeach%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ful%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%40endif%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%3C%3Fphp%0A%20%20%20%20%20%20%20%20%20echo%20Form%3A%3Aopen(array(‘url’%3D%3E’%2Fvalidation’))%3B%0A%20%20%20%20%20%20%3F%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%3Ctable%20border%20%3D%20’1’%3E%0A%20%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20align%20%3D%20’center’%20colspan%20%3D%20’2’%3ELogin%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3EUsername%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%3C%3Fphp%20echo%20Form%3A%3Atext(‘username’)%3B%20%3F%3E%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3EPassword%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%3C%3Fphp%20echo%20Form%3A%3Apassword(‘password’)%3B%20%3F%3E%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20align%20%3D%20’center’%20colspan%20%3D%20’2’%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3E%3C%3Fphp%20echo%20Form%3A%3Asubmit(‘Login’)%3B%20%3F%20%20%3E%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%3C%2Ftable%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%3C%3Fphp%0A%20%20%20%20%20%20%20%20%20echo%20Form%3A%3Aclose()%3B%0A%20%20%20%20%20%20%3F%3E%0A%20%20%20%0A%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E” message=”resources/views/login.blade.php” highlight=”” provider=”manual”/]

حال محتویات فایل روت را بصورت زیر تغییر دهید.

[pastacode lang=”php” manual=”Route%3A%3Aget(‘%2Fvalidation’%2C’ValidationController%40showform’)%3B%0ARoute%3A%3Apost(‘%2Fvalidation’%2C’ValidationController%40validateform’)%3B” message=”app/Http/routes.php” highlight=”” provider=”manual”/]

حال برای بررسی نتیجه کار به آدرس زیر مراجعه کنید.

[pastacode lang=”markup” manual=”http%3A%2F%2Flocalhost%3A8000%2Fvalidation” message=”” highlight=”” provider=”manual”/]

در خروجی مرورگر شما یک فرم است بدون پر کردن مقادیر فرم آن را اجرا نمایید، خواهید دید که پیغام های متناظر با خالی بودن فرم برای شما نمایش داده خواهد شد.