Cách đề xuất để viết logic xác thực và ủy quyền là đặt logic đó trong các lớp yêu cầu riêng biệt. Bằng cách này, mã bộ điều khiển của bạn sẽ vẫn sạch.
Bạn có thể tạo một lớp yêu cầu bằng cách thực thi php artisan make:request SomeRequest
.
Trong mỗi rules()
phương thức của lớp yêu cầu, hãy xác định các quy tắc xác thực của bạn:
//SomeRequest.php
public function rules()
{
return [
"name" => [
'required',
'array', // input must be an array
'min:3' // there must be three members in the array
],
"name.*" => [
'required',
'string', // input must be of type string
'distinct', // members of the array must be unique
'min:3' // each string must have min 3 chars
]
];
}
Trong bộ điều khiển của bạn, hãy viết hàm định tuyến của bạn như sau:
// SomeController.php
public function store(SomeRequest $request)
{
// Request is already validated before reaching this point.
// Your controller logic goes here.
}
public function update(SomeRequest $request)
{
// It isn't uncommon for the same validation to be required
// in multiple places in the same controller. A request class
// can be beneficial in this way.
}
Mỗi lớp yêu cầu đi kèm với các móc / phương thức xác thực trước và sau xác thực có thể được tùy chỉnh dựa trên logic nghiệp vụ và các trường hợp đặc biệt để sửa đổi hành vi bình thường của lớp yêu cầu.
Bạn có thể tạo các lớp yêu cầu cha cho các loại yêu cầu tương tự (ví dụ web
và api
) các yêu cầu và sau đó đóng gói một số logic yêu cầu chung trong các lớp cha này.
$request->validate([...])
. Một ngoại lệ sẽ được đưa ra nếu dữ liệu không được xác thực.