Я нашел решение. Лучший способ сделать это простым способом - поместить расширение перед маркой:

ользую 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);
});

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

РЕШЕНИЕ :

Хорошо, лучший способ сделать это простым способом - поместить расширение перед маркой:

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

Ответы на вопрос(2)

Ваш ответ на вопрос