مثالی از ایجاد یک قانون اعتبار سنجی سفارشی در لاراول

در هنگام پر کردن داده‌های یک فرم توسط کاربر در لاراول، می‌توان با اعمال قوانین اعتبارسنجی از ورود اطلاعات نادرست در فرم‌ها جلوگیری کرد.


در این مقاله از لیداوب قصد داریم، مثالی از نحوه ایجاد یک قانون اعتبارسنجی سفارشی توسط یک دستور آرتیسان در لاراول 5.5 را با هم بیاموزیم. در مثال زیر، فرمی را مشاهده می‌کنید که جهت وارد کردن اطلاعات مربوط به رویدادهای بازی‌های تابستانی المپیک مانند سال و شهر مورد استفاده قرار می گیرد.

laravel validation rule

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

- بازی‌ها از سال 1896 آغاز می‌شود
- سال وارد شده نمی‌تواند بزرگتر از سال جاری باشد
- تعداد ارقام سال باید 4 رقم باشد.

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

php artisan make:rule OlympicYear

با اجرای این دستور، لاراول یک فایل app/Rules/OlympicYear.php ایجاد می‌کند:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class OlympicYear implements Rule
{

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

مطالعه بیشتر درباره اعتبارسنجی در لاراول:

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

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

سپس، در متد message() پیغام خطا را برای قانون اعتبارسنجی به صورت زیر تعریف می‌کنیم:

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 خود ایجاد ‌کنیم.

در تصویر زیر مشاهده می‌کنید که با وارد کردن عدد 2017 در فیلد year و ذخیره آن، قانون اعتبارسنجی اعمال می‌شود و یک پیغام خطا صادر می‌شود.

laravel validation rule

آموزش‌های بیشتر در لیداوب:

آموزش پایه لاراول ۵,۵

آموزش CSS

آموزش HTML مقدماتی

مقالات برنامه نویسی با PHP و فریم ورک لاراول را در کتابخانه آنلاین لیداوب دنبال کنید و سوالات و نظرات خودتان را در بخش کامنت‌ها با ما در میان بگذارید.