【发布时间】:2017-06-01 13:35:01
【问题描述】:
我使用 Laravel 5.3。我想使用表单验证来测试用户密码的哈希值。
这是我的代码:
$validator = Validator::make($request->all(), [
'old_password' => 'required|max:20|min:6',
'new_password' => 'required|max:20|min:6',
'new_password_confirm' => 'required|same:new_password',
]);
// test old password
if (! Hash::check($request->old_password, $user->user_passwd)) {
$validator->errors()->add('end', 'The end time must be within three hours of the start');
}
这不起作用,即使条件得到验证。我已经测试过了:
Validator::extend('old_password', function($attribute, $value) use ($user) {
return Hash::check($value, $user->user_passwd);
});
但是我不明白这个怎么用?
解决方案:
好的,最好的方法是简单的,把extend放在make之前:
Validator::extend('checkPassword', function ($attribute, $value, $parameters, $validator) use($user) {
return Hash::check($value, $user->user_passwd);
}, 'Your message error !');
$validator = Validator::make($request->all(), [
'old_password' => 'required|max:20|min:6|checkPassword',
'new_password' => 'required|max:20|min:6',
'new_password_confirm' => 'required|same:new_password',
]);
【问题讨论】:
-
是否达到" $validator->errors()->add('end', '结束时间必须在开始的三小时内');" ?
-
它显示任何错误
-
是的,它到达了。我尝试用 die('test !');死掉就好了。
-
不,只是验证器不会失败,即使 old_password 不是好密码。
-
old_password 现在是自定义验证。所以你可以使用像'password' => 'old_password'这样的规则。这将接受密码参数。