اعتبارسنجی فرم ها در لاراول

1398/01/26
182
اعتبارسنجی فرم ها در لاراول

توسعه دهندگان لاراول همواره روش های مختلفی را برای اعتبارسنجی فرم ها استفاده می کنند.
برای مثال برخی افراد ترجیح می دهند اعتبارسنجی خود را درون کنترلر انجام دهند،برخی درون مدل و برخی دیگر همواره ترجیح می دهند که اعتبارسنجی فرم ها را در لایه ای جدا انجام دهند.

البته همه ی روش ها درست هستند اما همیشه بهترین روش ترجیح داده می شود.

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

درخواست فرم (Form Request)

هرزمان که ما بخواهیم یک فرم را سمت سرور ارسال نماییم،یک درخواست HTTP انجام می دهیم.درخواست فرم ها کلاس های اختصاصی هستند که این درخواست ها را اداره کرده و در لاراول نشان می دهند.

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

php artisan make:request CreateUserRequest

این دستور کلاس CreateUserRequest در مسیر app/Http/Requests برای ما ایجاد می کند.

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

<?php namespace App\Http\Requests;
use App\Http\Requests\Request;

class CreateUserRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }

}

همانطور که مشاهده می کنید این کلاس شامل دو متد ()rules و ()authorize است.

متد ()rules یک چارچوب منظمی از قوانین اعتبارسنجی لاراول را در خروجی به ما می دهد.مانند زیر:

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class CreateUserRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:8'
        ];
    }

}

اما چطور از این کلاس استفاده کنیم؟

برای این کار ما یک کنترلر ساده برای user ایجاد می کنیم.

php artisan make:controller UsersController

ما متدهای ()store و ()update را به کنترلر مورد نظر اضافه می کنیم.

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class UsersController extends Controller {

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        //
    }
}

و اما بخش هیجان انگیز این قسمت این است که چطور از کلاس  UserRequest استفاده کنیم.

برای استفاده از آن form request مورد نظر را به عنوان ورودی به متد store می دهیم.

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Http\Requests\CreateUserRequest;

class UsersController extends Controller {

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store(CreateUserRequest $request)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        //
    }
}

اکنون اعتبارسنجی خود را درون متد ()rules در کلاس UserRequest ایجاد می کنیم و مقدار متد ()authorize را برابر true قرار می دهیم:

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class CreateUserRequest extends Request {

    /**
     * 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 [
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:8'
        ];
    }

}

تمام! به همین راحتی ما اعتبارسنجی خود را در یک کلاس جداگانه ایجاد کردیم. 

 

نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید