در طراحی یک وب اپلیکیشن بکارگیری 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”/]
در خروجی مرورگر شما یک فرم است بدون پر کردن مقادیر فرم آن را اجرا نمایید، خواهید دید که پیغام های متناظر با خالی بودن فرم برای شما نمایش داده خواهد شد.