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