Laravel:拒绝验证中的空 PUT 请求
Laravel: Deny empty PUT requests in validation
Laravel 5.3 的 $api->resource()
路由将 PUT 请求映射到控制器的 update
方法。
当发出空的 HTTP PUT 请求时,我未能触发验证错误。我的 $this->validate()
规则都是可选的,因为更新中不需要任何字段。
但如果请求为空,我真的很想让验证失败 (count($request->all() == 0
)。
有没有办法用 in-built validation rules 做到这一点?
'*' => 'min:1'
的验证规则无效。
我没有找到有效的内置规则,所以我注册了一个自定义规则:
\Illuminate\Support\Facades\Validator::extendImplicit(
'requestnotempty',
function($attribute, $value, $parameters, $validator) {
return count($validator->getData()) !== 0;
}
);
然后我用了它:
$this->validate(
$request,
[
'' => 'requestnotempty',
//...
]
);
Laravel 5.3 的 $api->resource()
路由将 PUT 请求映射到控制器的 update
方法。
当发出空的 HTTP PUT 请求时,我未能触发验证错误。我的 $this->validate()
规则都是可选的,因为更新中不需要任何字段。
但如果请求为空,我真的很想让验证失败 (count($request->all() == 0
)。
有没有办法用 in-built validation rules 做到这一点?
'*' => 'min:1'
的验证规则无效。
我没有找到有效的内置规则,所以我注册了一个自定义规则:
\Illuminate\Support\Facades\Validator::extendImplicit(
'requestnotempty',
function($attribute, $value, $parameters, $validator) {
return count($validator->getData()) !== 0;
}
);
然后我用了它:
$this->validate(
$request,
[
'' => 'requestnotempty',
//...
]
);