mhe*_*ier 1 php validation laravel
我正在使用用户登录进行 laravel 项目。管理员可以创建新用户和编辑现有用户。我在更新用户表单中有一个password和一个passwordConfirm字段。如果管理员在表单中输入了一个新密码,它应该检查验证并更新数据库中的记录。如果不是,则不应更改密码(保留旧密码),而是更新其他用户数据(如名字)。
如果我试图用一个空的发送形式password和passwordConfirm领域,它不验证。我收到验证错误,密码必须是字符串且长度至少为 6 个字符,但我不知道为什么。似乎我的更新函数的第一行将被忽略。
用户控制器.php
public function update(User $user, UserRequest $request) {
$data = $request->has('password') ? $request->all() : $request->except(['password', 'passwordConfirm']);
$user->update($data);
return redirect('/users');
}
Run Code Online (Sandbox Code Playgroud)
用户请求文件
public function rules() {
return [
'firstname' => 'required|string|max:255',
'lastname' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'password' => 'string|min:6',
'passwordConfirm' => 'required_with:password|same:password',
];
}
Run Code Online (Sandbox Code Playgroud)
如果您只想在某个字段存在时对其进行sometimes验证,请在这种情况下使用验证规则。
将sometimes验证添加到password& passwordConfirm。$data从update(); 中删除该行
// UserController.php
public function update(User $user, UserRequest $request) {
$user->update($request->all());
return redirect('/users');
}
// UserRequest.php
public function rules() {
return [
'firstname' => 'required|string|max:255',
'lastname' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'password' => 'sometimes|required|string|min:6',
'passwordConfirm' => 'sometimes|required_with:password|same:password',
];
}
Run Code Online (Sandbox Code Playgroud)
参考 - https://laravel.com/docs/5.4/validation#conditionally-adding-rules
| 归档时间: |
|
| 查看次数: |
5675 次 |
| 最近记录: |