编写验证和授权逻辑的推荐方法是将该逻辑放在单独的请求类中。这样,您的控制器代码将保持干净。
您可以通过执行创建请求类php artisan make:request SomeRequest
。
在每个请求类的rules()
方法中,定义您的验证规则:
//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
]
];
}
在您的控制器中,编写如下的route函数:
// 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.
}
每个请求类都带有验证前和验证后的钩子/方法,可以根据业务逻辑和特殊情况对其进行自定义,以修改请求类的正常行为。
您可以为类似类型的请求(例如web
和api
)请求创建父请求类,然后在这些父类中封装一些常见的请求逻辑。
$request->validate([...])
。如果数据验证失败,将引发异常。