03/11/2018, 07:57

Hướng dẫn sử dụng Request validation trong Laravel

Hướng tạo request validation để check chuẩn dữ liệu đào vào trong Laravel

Xin chào các bạn!

 

Hôm nay mình sẽ hướng dẫn các bạn tạo một Request validation trong laravel để check chuẩn dữ liệu đàu vào thoe ý mình muốn.

Đầu tiên mình sẽ tạo một file trong thư mục requests để check dữ liệu bàng lệnh

 

php artisan make:request TestRequest

Sau đó hệ thống sẽ tự tạo cho chúng ta một file request app/Http/Middleware/TestRequest.php

 

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class TestRequest 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 [
            //
        ];
    }
}

-      Trong function authorize() nếu bạn không check quyền đăng nhập bạn có thể trả về kết quả là true.

 

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

-      Trong function rules() mình sẽ viết sẽ quy tác rằng buộc dữ liệu theo mình muốn.

VD

return [

            'userName' => 'required|string',
            'passWord' => 'required|string',
 ];

- Vế bên tay trái (userName, passWord) là tên biến của các trường nhập liệu.

- Vế bên tay phải là những quy tắc rằng buộc. như ví dụ trên required bắt buộc phải nhập dữ liệu đầu vào, string dữ liệu đầu vào phải là kiểu string.

Trong laravel cung cấp rất nhiều rules bạn có thể xem và tham khảo ở đâu:

https://laravel.com/docs/5.2/validation#rule-accepted

 

Nếu bạn không nhập dữ liệu cho 2 trường trên, thì dữ liệu trả về có cấu trúc như thế này.

 

{
    "status_code": 422,
    "code": 0,
    "message": "The username field is required.",
    "errors": {
        "username": [
            "The username field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
    
}

Dữ liệu trả về toàn tiếng anh, bạn muốn custom lại message theo ý mình muốn thì bạn viết thêm một function message().

Ví dụ: 

 

public function messages()
    {
        return [
            'username.required' => 'Username là thông tin bắt buộc.',
            'password.required' => 'password là trường bắt buộc.',
        ];
    }

Nếu đó dữ liệu trả về theo ý muốn của chúng ta.

 

{
    "status_code": 422,
    "code": 0,
    "message": "Username là thông tin bắt buộc.",
    "errors": {
        "username": [
            "Username là thông tin bắt buộc."
        ],
        "password": [
            "password là trường bắt buộc."
        ]
    }
}

Công việc bây giờ rất đơn giản, bạn muốn sử dụng check dữ liệu ở controller nào thì bạn chỉ việc gọi vào và sử dụng.

 

- Để khai báo trong một controller bạn hãy use nó vào controller đó

use App\Http\Requests\TestRequest;

- Bạn muốn check nó ở function nào thì bạn viết nó theo cấu trúc

 

 public function testLogin(TestRequest $request){}

Khi đó  dữ liệu đầu vào nhu userName, passWord trước khi vào controller testLogin nó sẽ kiểm tra trước khi vào.

 

Bài mình viết của mình xin hết. cám ơn các bạn.

 

Nguồn Laravel 5.2 https://laravel.com/docs/5.2/validation#rule-accepted

+2