【发布时间】:2016-06-04 10:21:17
【问题描述】:
有一个UpdateUserRequest 表单请求根据rules mathod 中定义的规则验证字段值。默认情况下它具有rules() 和authorize() 方法。我想阻止验证和更新空字段(例如密码)。
在规则中使用sometimes 没有用,因为 POST 请求中会出现 html 输入,即使它们是空的。
array:6 [▼
"_method" => "PATCH"
"_token" => "Cz79rRez2f6MG0tTU17nVwXD0X1lNGH1hA7OORjm"
"name" => "john"
"email" => "mymail@gmail.com"
"password" => ""
"password_confirmation" => ""
]
所以我应该在规则中使用 sometimes 之前删除 POST 请求的空键。
问题是:清除请求数组的最佳位置在哪里?
是否有任何 laravel 内置方法来管理这种情况?
附注:解决方案:
@Bogdon 解决方案仍然有效且有效,但从 here 采用了另一个简单、漂亮、整洁的解决方案:
只需在表单请求中覆盖 all() 方法
class RegistrationRequest extends Request
{
...
public function all()
{
$attributes = parent::all();
if(isset($attributes['password']) && empty($attributes['password']))
{
unset($attributes['password']);
}
$this->replace($attributes);
return parent::all();
}
...
}
【问题讨论】:
标签: validation laravel request rules