چگونه در لاراول، به راحتی یک اعتبار سنجی سفارشی بسازیم؟

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 07 مرداد 1397
دسته بندی ها : لاراول

به تازگی یک ویژگی که در لاراول 5.5 معرفی شد را پیدا کردم. دستور هنرمندانه‌ای که قانون اعتبار سنجی شما را شبیه به کلاس‌های Request می‌کند.

بیایید فرمی را مثال قرار دهیم، که درباره بازی‌های المپیک است. پس این فرم، دارای دو فیلد سال و شهر است:

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

  • بازی‌ها در سال 1896 شروع شدند.
  • سال وارد شده، نمی‌تواند بزرگ‌تر از سال فعلی باشد.
  • اعداد باید به ۴ تقسیم شوند.

این دستور را اجرا کنید:

php artisan make:rule OlympicYear

لاراول فایلی به نام app/Rules/OlympicYear.php می‌سازد:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class OlympicYear implements Rule

{

    /**
     * تعیین کنید که قانون اعتبارسنجی رد می‌شود یا خیر.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */

    public function passes($attribute, $value)

    {
        //
    }

    /**
     * پیغام خطای اعتبار سنجی را دریافت کنید.
     *
     * @return string
     */

    public function message()
    {
        return 'The validation error message.';
    }

}

همانطور که گفتم، این قانون مشابه کلاس‌های Request برای اعتبارسنجی هستند. حال متدها را وارد می‌کنیم. Passes() باید بر حسب شرط $value، مقدار true یا false را برگرداند، که در این مورد، کد زیر است:

public function passes($attribute, $value)
{
    return $value >= 1896 && $value <= date('Y') && $value % 4 == 0;
}

سپس، پیغام خطا را به این صورت وارد می‌کنیم:

public function message()
{
    return ':attribute should be a year of Olympic Games';
}

در آخر، چگونه از این کلاس استفاده می‌کنیم؟ در متد store()، این کد را وارد کنید:

public function store(Request $request)
{
    $this->validate($request, ['year' => new OlympicYear]);
}

به سینتکس آن دقت کنید. پارامتر دوم باید یک آرایه باشد، و این که از کلاس Rule خود، یک آبجکت جدید ساختیم.

به همین سادگی، کار به اتمام می‌رسد!

منبع

مقالات پیشنهادی

یک تجربه کاربری کامل : واقعیت یا خیال ؟

روی تجربه کاربری(ux) تمرکز کنید، شگفت آوره، هنوز هم می تونيد روی یک پروژه که به نظريات اون تسلط داريد چيره بشيد. در حالي كه بر اساس قوانين تصميم گيري...

دکتر استارتاپ (مهدی علیپور) چگونه کار می کند

این مطلب به درخواست وبسایت راکت تهیه شده ، از من خواسته شده تا در مورد روتین های روزمره ، سبک کاری ، فضای کارم و ابزارهایی که استفاده میکنم براتون توض...

خالق لاراول چگونه کار می‌کند؟

اخیرا افرادی را دیدم که وضعیت / روند کاری خود را به اشتراک می‌گذارند. پس من هم تصمیم گرفتم که همین کار را انجام دهم.

بهترین تکنیک‌ها برای طراحی فرم

فرم‌ها المان‌های مهمی هستند و بسیاری از تجارت‌ها بر آن‌ها متکی‌اند. یک فرم در حقیقت سندی الکترونیکی است که به صورت ساختاری شامل یکسری ورودی‌های مربوط...