Я работаю с Laravel 5.6 и собираюсь обновить значения моей пользовательской таблицы (name, email, password) как системный администратор.
лезвие файл
<form action = "{{route('users.update',$user->id)}}" method = "POST">
{{method_field('PUT')}}
{{csrf_field()}}
<div class = "form-group">
<label for = "name">Name</label>
<input type = "text" class = "form-control" id = "name" name = "name" value = "{{$user->name}}" >
</div>
<div class = "form-group">
<label for = "email">Email</label>
<input type = "text" class = "form-control" id = "email" name = "email" value = "{{$user->email}}">
</div>
<div class = "form-group">
<label for = "password">Password</label>
<input type = "password" class = "form-control" id = "password" name = "password">
</div>
<div class = "form-group">
<label for = "password_confirmation">Confirm Password</label>
<input type = "password" class = "form-control" id = "password_confirmation" name = "password">
</div>
<button type = "submit" class = "btn btn-primary">Edit User</button>
</form>
и мой контроллер,
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->name = $request->name;
$user->uservalue = $request->uservalue;
$user->email = $request->email;
$user->password = bcrypt($request->input('password'));
$user->save();
return view('users.show')->withUser($user);
}
Проблема
my password confirmation is not working
Это означает, что я могу ввести пароль без подтверждения или неверный пароль подтверждения. Как я могу исправить эту проблему?
НЕТ .... не подтверждать
Можете выложить результат dd($request->all());?
Аргумент 1, переданный в App \ Http \ Controllers \ Controller :: validate (), должен быть экземпляром Illuminate \ Http \ Request, заданного массива, вызываемого в C: \ Users \ banda \ Desktop \ acxian \ app \ Http \ Controllers \ UserContr Oller.php в строке 118 и определил
Вам придется опубликовать большую часть вашего контроллера. Что-то не так, но никто не может сказать, потому что у нас нет информации. Request $request должен быть поставщиком услуг. В вашем случае это массив. Как?






Вы должны добавить подтверждение пароля. Чтобы это работало, ваше второе поле пароля должно называться password_confirmation (или foo и foo_confirmation)
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$request->validate([
'password' => 'sometimes|min:6|confirmed'
]);
$user->name = $request->name;
$user->uservalue = $request->uservalue;
$user->email = $request->email;
$user->password = bcrypt($request->input('password'));
$user->save();
return view('users.show')->withUser($user);
}
Вы можете добавить дополнительные поля проверки, как объяснено здесь. Если проверка не удалась, браузер вернет пользователя на страницу обновления. Ошибки находятся в пакете ошибок laravel, доступном в ваших представлениях как $errors.
sometimes означает, что следующие правила необходимы, если есть вход. Поскольку вы хотите обновить информацию о пользователе, ваши посетители могут оставить поле пароля пустым, если они не хотят обновлять пароль. Перед обновлением пользовательского ввода снимите флажок с поля пароля (если оно пусто).
это произошло это сообщение об ошибке * (1/1) BadMethodCallException Метод проверки не существует. *
У вас use Illuminate\Http\Request;? Вместо этого попробуйте $this->validate($request, ['password' => 'sometimes|min:6|confirmed']);.
теперь не ошибка, но данные не обновляются в форме обновления.
Вы проверяете свои поля?