Laravel 5.3 использует специальную проверку

Я использую 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'); } 

Это не работает, даже если conditon проверен. Я протестировал это:

 Validator::extend('old_password', function($attribute, $value) use ($user) { return Hash::check($value, $user->user_passwd); }); 

Но я не понимаю, как это использовать?


РЕШЕНИЕ :

Хорошо, лучший способ сделать это простым способом, поместить расширение до 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', ]); 

Ваше обычное правило old_password может использоваться как это

 $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', ]); 

Расширить валидатор. CheckPassword – это класс с методом isValid ().

 Validator::extend('checkpassword', function ($attribute, $value, $parameters, $validator) { return (new CheckPassword($attribute, $value, $parameters, $validator))->isValid(); }); 

CheckPassword.php будет как

 /** * Attribute being tested * * @var mixed */ protected $attribute; /** * Value of the attribute * * @var mixed */ protected $value; /** * Array of parameters passed to the value * * @var array */ protected $parameters; /** * Validator instance * * @var mixed */ protected $validator; /** * Class constructor * * @param mixed $attribute * @param Uploaded $value * @param array $parameters * @param mixed $validator */ public function __construct($attribute, $value, $parameters, $validator) { $this->attribute = $attribute; $this->value = $value; $this->parameters = $parameters; $this->validator = $validator; } public function isValid() { $value = $this->value; //Old password Value //after this you can check hash and return true or false. } 

Я нашел решение. Лучший способ сделать это простым способом – разместить расширение до 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', ]);