Как обновить существующие значения пользовательской таблицы с подтверждением пароля в laravel

Я работаю с 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

Это означает, что я могу ввести пароль без подтверждения или неверный пароль подтверждения. Как я могу исправить эту проблему?

Вы проверяете свои поля?

nice_dev 09.08.2018 10:10

НЕТ .... не подтверждать

banda 09.08.2018 14:56

Можете выложить результат dd($request->all());?

Dimitri Mostrey 09.08.2018 16:41

Аргумент 1, переданный в App \ Http \ Controllers \ Controller :: validate (), должен быть экземпляром Illuminate \ Http \ Request, заданного массива, вызываемого в C: \ Users \ banda \ Desktop \ acxian \ app \ Http \ Controllers \ UserContr‌ Oller.php в строке 118 и определил

banda 09.08.2018 17:05

Вам придется опубликовать большую часть вашего контроллера. Что-то не так, но никто не может сказать, потому что у нас нет информации. Request $request должен быть поставщиком услуг. В вашем случае это массив. Как?

Dimitri Mostrey 09.08.2018 17:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
113
1

Ответы 1

Вы должны добавить подтверждение пароля. Чтобы это работало, ваше второе поле пароля должно называться 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 Метод проверки не существует. *

banda 09.08.2018 15:03

У вас use Illuminate\Http\Request;? Вместо этого попробуйте $this->validate($request, ['password' => 'sometimes|min:6|confirmed']);.

Dimitri Mostrey 09.08.2018 16:12

теперь не ошибка, но данные не обновляются в форме обновления.

banda 09.08.2018 16:23

Другие вопросы по теме