Почему моя проверка не работает, но если я одобряю проверку, код будет успешно запущен. [Вот мой контроллер] [1]
функция changepassword (Запрос $ req) {
$this->validate(
$req,
[
'currpassword' => 'required | min:5',
'newpassword' => 'required | min:5',
'confirmnewpassword' => 'required| same:newpassword |min:5'
]);
// Validasinya gajalan
$id = $req->input('id');
$data = User::find($id);
$currpassword = $req->input('currpassword');
$newpassword = $req->input('newpassword');
$confirmnewpassword = $req->input('confirmnewpassword');
$currpass = $req->input('currpassword'); // password yang lama
$currpasshash = Hash::make('currpassword');
if (Hash::check($currpass , $data->password)) {
$data->password = Hash::make($newpassword);
$data->save();
return redirect('profile');
}
else{
return redirect('changepassword');
}
}






Вы передали неправильный параметр в свой метод проверки, попробуйте это,
$this->validate(
$req->all(), [
'currpassword' => 'required | min:5',
'newpassword' => 'required | min:5',
'confirmnewpassword' => 'required| same:newpassword |min:5'
]);
Между полем с именем newpassword и символом pip | есть пробел, а laravel идентифицирует имя поля как «newpassword» вместо «newpassword», что всегда приводит к ошибке.
Удалите пробел и попробуйте:
'confirmnewpassword' => 'required | same:newpassword| min:5'
это ни на что не повлияло :(. результат все еще возвращается на страницу смены пароля, когда я нажимаю кнопку смены пароля
@KennyNataniel, можете ли вы подтвердить, происходит ли перенаправление на страницу смены пароля из-за функции подтверждать или из следующей строки возврат перенаправления ('changepassword');
Вы можете попробовать этот код.
function changepassword(Request $req) {
$validatedData = $request->validate([
'currpassword' => 'required|min:5',
'newpassword' => 'required|min:5',
'confirmnewpassword' => 'required|same:newpassword|min:5'
]);
}
Отображение ошибок валидации
<h1>Create Post</h1>
@if ($errors->any())
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Для получения дополнительной информации посетите Проверка в Laravel.
Я надеюсь, что это поможет вам...
в какой строке или каким методом?
я имею в виду, что проверка метода не существует, это сообщение об ошибке «BadMethodCallException в строке 74 Macroable.php: проверка метода не существует».
вы импортировали валидатор? использовать валидатор
Я использую это «используйте Illuminate \ Support \ Facades \ Validator;» это верно?
да, но используйте его в верхней части скрипта вместо длинного фасада с пространством имен. использовать Валидатор;
он работает сам по себе, я ничего не менял, ха-ха, кстати, спасибо за помощь, братан!
Рад это слышать :)
он не работает, :( результатом было сообщение об ошибке "Ошибка типа: аргумент 1, переданный в App \ Http \ Controllers \ Controller :: validate (), должен быть экземпляром Illuminate \ Http \ Request, заданный массив",