Written on 13th April 2026 by Carter Phan.
Dùng để xác định các quy tắc cho các fields mà chúng ta truyền lên: Cách thiết lập rules sẽ giống như chúng ta validation bên controller. Nó sẽ giống như thế này
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
Cách validate trên vẫn khá đơn giản. Giả sử chúng ta trong trường hợp cần validate phức tạp hơn. Ví dụ như chúng ta có thêm một trường comments kiểu array chẳng hạn. Và trông nó sẽ kiểu như thế này:
[
{
vote: '1',
content:'test validate'
},
{
vote: '2',
content:'test validate'
},
]
Giả sử chúng ta muốn validate cái trường vote kia là integer chẳng hạn. Không thể dùng 'vote' => 'integer' được.Lúc đó chúng ta phải dùng thế này:
'comements.*.vote' => 'integer'
Dấu * ở đằng sau laravel sẽ hiểu là để truy cập vào từng phần tử của mảng, .vote là để truy cập đến thuộc tính vote của mỗi phần tử. Trường hợp phải validate một mảng truyền lên gặp khá là nhiều nên mình liệt kê ở đây. Ngoài ra vẫn còn nhiều trường hợp phức tạp khác nhưng hiện tại mình chưa nghĩ ra
Sau khi pass qua các rules này rồi thì controller sẽ tiếp tục được thực hiện.Còn nếu không pass thì server sẽ trả lại một message mặc đinh được laravel thiết lập sẵn tương ứng với từng rules.Để config lại phần message này thì chúng ta sẽ dùng hàm message().
Để config lại phần message mà server trả ra theo ý của bạn thì chúng ta phải ghi đè hàm message của laravel. Chúng ta sẽ tạo một hàm message ở trong request mà chúng ta vừa tạo:
public function messages()
{
return [
'title.required' => 'A title is required',
'body.required' => 'A message is required',
.........
];
}
Ở đây title.required là chúng ta đang config lại phần message cho rule required của trường title. Và với các trường khác cũng tương tự như vậy : 'tên-trường.rule' => '..........'