آموزش مقدماتی لاراول – اعتبارسنجی اطلاعات ارسال شده به سرور

در مقاله قبلی نحوه ارسال اطلاعات به سرور رو یاد گرفتیم و تونستیم نام چند آهنگ رو درون جدول ذخیره کنیم. اما اگر از طرف کاربر اطلاعات اشتباهی ارسال شد و یا فیلد نام آهنگ خالی ارسال شده بود چی؟! در اینصورت با صفحه زیر روبرو میشیم: 

Image for post
Image for post

برای رفع این مشکل لازمه پیش از وارد کردن رکورد جدید از درست بودن اطلاعات مطمئن بشیم و اطلاعات رو ارزیابی کنیم.

برای ارزیابی اطلاعات وارد شده در لاراول میتونیم از خاصیت validate در تابع کمکی request استفاده کنیم. برای اینکار به تابع store در کنترلر برمی‌گردیم و یکسری قوانین برای ارزیابی اطلاعات وارد شده تعریف میکنیم. اولین قانون بررسی ضروری بودن نام آهنگ هست، تا کاربر نتونه نام خالی برای ارسال کنه:

public function store()
{
   \request()->validate([
       'name' => 'required'
   ]);
   $song = new Song();
   $song->name = \request('name');
   $song->save();
   return back();
}

حالا اگر فیلد نام رو خالی بگذاریم و درخواست ارسال کنیم می‌بینیم که از صفحه خطای قبلی خبری نیست و فقط صفحه رفرش میشه.  البته اگر بخواهیم خطای مربوط به درخواست کاربر هم نمایش بدیم برای اینکه رابط کاربری برنامه هم حفظ بشه باید متغیر errors رو نمایش بدیم. متغییر error یک داده از json از و زمانی که درخواست ما در مرحله ارزیابی رد میشه خطای مربوطه رو برای ما برمی‌گردونه!

برای نمایش خطای مرحله ارزیابی بصورت زیر فایل blade مربوط به آهنگامونو بصورت زیر تغییر میدیم:

Image for post
Image for post

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

Image for post
Image for post

بیایید قوانینی دیگری رو هم وارد کنیم مثلا محدودیت کاراکتر:

Image for post
Image for post

و یا تکراری نبودن نام آهنگ (البته این مورد بیشتر برای نام کاربری یا آدرس داخلی سایت استفاده میشه اینجا صرفا هدف آموزش هست):

Image for post
Image for post

کلی شرط دیگر هم میتونید برای اطلاعات وارد شده در نظر بگیریم که لیست اون‌هارو می‌تونیم در آدرس زیر مشاهده کنید:

یکی دیگر از مواردی که احتمالا متوجهش شدید و رعایت اون قطعا به تجربه کاربری ما کمک میکنه. خالی شدن فیلد زمانی که کاربر درخواستش با خطا مواجه میشه هست! برای جلوگیری از این مورد یک تابع کمکی جالب دیگه  بنام old وجود دارد که شما می‌تونید مقداری که کاربر سمت سرور ارسال کرده و با خطا مواجه میشه رو به فیلد بر گردونید. بیایید این مورد هم به فرم خودمون اضافه کنیم:

Image for post
Image for post

خب شما در این مقاله با نحوه مدیریت و ارزیابی اطلاعات ارسالی سمت سرور آشنا شدید. من در انتهای این آموزش کمی کدهای blade مون رو تمیز کردم که میتونید کد نهایی رو از github پروژه مشاهده کنید. فقط چندتا مورد رو توضیح میدم.

شما می‌تونید همواره با دستور include کدها و فرمهای مختلف رو در یکدیگر وارد کنید. برای نمونه من قسمت nav رو از layout جداکردم و در یک blade مجزا قرار دادم و نهایتا با include اونرو به layout برگردوندم. مورد بعدی عنوان هر صفحه بود که با نوشتن یه yield در قالب اصلی layout در هر صفحه مقدار مناسب اونرو ارسال کردم با اینکار عنوان صفحه در هر مسیر تغییر میکنه. 

ی نکته که در مورد کار با yield باید بدونیم اینه که می‌تونیم یه پارامتر دومی رو به عنوان مقدار پیش‌فرض براش تعریف کنیم، مثلا در قسمت عنوان قالب اصلی layout من عنوان رو بصورت زیر مقدار دهی کردم:

<title>@yield('title', 'آموزش مقدماتی لاراول')</title>

نکته دیگر اینکه می‌تونیم در جاهایی که section تنها یک مقدار رشته‌ای میخواد اون رو بصورت زیر بنویسیم:

@section('title', 'ارتباط با ما')

امیدوارم از این مطلب آموزشی لذت برده باشید