当我尝试使用表单验证来验证来自客户端的数据时,由于
在这个例子中,即使未设置
我还注意到,如果
我该怎么处理呢?我想先检查规则,然后再根据规则进行授权。
rules()
中包含的验证规则被违反,因此无法正确验证。即使如此,authorize()
方法仍然会被执行。
以下是代码:
class PostAssignRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
$params = $this->request->all();
if(User::find($params['userId'])->company != Auth::user()->company)
{
return false;
}
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'userId' => 'required|exists:users,id',
'taskId' => 'required|exists:tasks,id'
];
return $rules;
}
}
在这个例子中,即使未设置
userId
参数,也会执行User::find()
。我还注意到,如果
authorize()
方法只返回true
,那么我会收到一个422
响应,告诉我缺少userId
参数。我该怎么处理呢?我想先检查规则,然后再根据规则进行授权。
ValidatesWhenResolvedTrait
,但我没有注意到它被FormRequest
使用,所以我没有想到覆盖它。很好的发现 :-) - siannone