در حال بارگزاری ...

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

توسط مریم مهربان
آخرین به روز رسانی پنجشنبه 30 آبان 1398

این مقاله از لیداوب، نحوه کار قوانین اعتبارسنجی سفارشی را توضیح می‌دهد. لاراول راهی آسان برای ایجاد قوانین اعتبارسنجی سفارشی، فراهم می‌کند. با استفاده از قوانین اعتبارسنجی سفارشی، شما می&

این مقاله از لیداوب، نحوه کار قوانین اعتبارسنجی سفارشی را توضیح می‌دهد. لاراول راهی آسان برای ایجاد قوانین اعتبارسنجی سفارشی، فراهم می‌کند.


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

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

برای ایجاد یک کلاس قانون جدید، می‌توانید از دستور make:rule استفاده کنید.

php artisan make:rule OnlyUppercase

کلاس قانون اعتبارسنجی OnlyUppercase را می‌توانید در مسیر app/Rules پیدا کنید. مسیر app/Rules در سلسله مراتب پوشه پروژه وجود ندارد و تنها با ساخت قانون سفارشی قابل دیدن است. کلاس تولید شده شبیه زیر خواهد بود:

<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class OnlyUppercase implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    /**
     * 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.';
    }
}

به روزرسانی کلاس Rule

پس از ایجاد کلاس قانون سفارشی، نوبت به بررسی توابع message و passws می‌رسد. در تابع passes شما می‌توانید قوانین اعتبارسنجی را پیاده سازی کنید و تابع message پیام خطای اعتبارسنجی را در برمی‌گیرد. برای مثال تابع passes کلاس قانون OnlyUppercase بررسی می‌کند که آیا مقدار موردنظر دارای حروف بزرگ است یا خیر و در تابع message هم پیام خطایی مبنی بر بزرگ بودن حروف ویژگی صادر می‌شود.

<?php



namespace App\Rules;



use Illuminate\Contracts\Validation\Rule;



class OnlyUppercase implements Rule

{

/**

* Create a new rule instance.

*

* @return void

*/

public function __construct()

{

//

}



/**

* Determine if the validation rule passes.

*

* @param string $attribute

* @param mixed $value

* @return bool

*/

public function passes($attribute, $value)

{

return strtoupper($value) === $value;

}



/**

* Get the validation error message.

*

* @return string

*/

public function message()

{

return 'The :attribute must be uppercase.';

}

}

 

همچنین، می‌توانید از پیام‌های خاص زبان لاراول به عنوان پیام خطا استفاده کنید. برای این منظور، به صورت زیر از تابع trans در تابع message استفاده کنید.

  /**

  * Get the validation error message.

  *

  * @return string

  */

  public function message()

 {

  return trans('validation.only_uppercase');

{

 

استفاده از قانون اعتبارسنجی در کلاس Form Request

 در این بخش از آموزش قصد داریم قانون اعتبارسنجی بالا را در کلاس Form Request پیاده سازی کنیم. برای این کار باید مانند زیر، با استفاده از عبارت use ، کلاس قانون اعتبارسنجی را در کلاس Form Reques t خود وارد کنید:

<?php



namespace App\Http\Requests;



use Illuminate\Foundation\Http\FormRequest;

use App\Rules\OnlyUppercase;



class PostRequest extends FormRequest

{

/**

* Determine if the user is authorized to make this request.

*

* @return bool

*/

public function authorize()

{

return true;

}



/**

* Get the validation rules that apply to the request.

*

* @return array

*/

public function rules()

{

return [

'post_title' => ['bail','required','min:6', new OnlyUppercase],

'post_content' => 'required'

];

}



/**

* Get the error messages for the defined validation rules.

*

* @return array

*/

public function messages()

{

return [

'post_title.required' => 'A post title is required',

'post_content.required' => 'A post content is required',

];

}

}

 

 

پس از به روزرسانی کد، می‌توانید فرم خود را با ورودی‌های مختلف تست کنید:

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

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

شما می‌توانید قانون اعتبارسنجی خود را به صورت مستقیم در کنترلر خود استفاده کنید. کلاس قانون اعتبارسنجی (مثلا OnlyUppercase) را در کنترلر وارد و این قانون را پیاده سازی کنید:

    use App\Rules\OnlyUppercase;
    $request->validate([
        'post_title' => ['bail','required','min:6', new OnlyUppercase],
        'post_content' => 'required'
    ]);

مطالعه مقالات مرتبط در لیداوب:

در این مقاله، شما نحوه ایجاد یک قانون اعتبارسنجی سفارشی و همچنین نحوه پیاده سازی آن در کلاس Form Request و کنترلرها را یاد گرفتید. در آموزش‌های آتی، مطالب بیشتری در مورد قانون اعتبارسنجی سفارشی با شما به اشتراک می‌گذاریم. پس با ما در لیداوب همراه باشید.  

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
ثبت امتیاز
0.3 (3 رای)

   لطفا صبر کنید ...