چگونه در لاراول، به راحتی یک اعتبار سنجی سفارشی بسازیم؟
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 1 دقیقه

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

به تازگی یک ویژگی که در لاراول 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 خود، یک آبجکت جدید ساختیم.

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

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

5 سال پیش
/@er79ka

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید