Я пытаюсь добавить информацию об обновлении, но вместо обновления добавляется новая запись. - PullRequest
0 голосов
/ 13 мая 2018

Так что в настоящее время я пытаюсь добавить функциональность для обновления информации о пользователях, однако мне не очень повезло с этим.В настоящее время вместо обновления текущего пользователя мой код создает новую запись в базе данных.Возможно, я допустил очень простую ошибку, но не могу ее найти.

Просмотр настроек, где происходит редактирование:

@extends('layouts.app')
@section('content')
<form method="post" action="{{ route('updateProfile', $user) }}">
    {{ csrf_field() }}
    {{ method_field('patch') }}

    <input type="text" name="first_name"  value="{{ $user->first_name }}" />

    <input type="text" name="last_name"  value="{{ $user->last_name }}" />

    <input type="text" name="username"  value="{{ $user->username }}" />

    <input type="email" name="email"  value="{{ $user->email }}" />

    <input type="password" name="password" />

    <input type="password" name="password_confirmation" />

    <button type="submit">Save Changes</button>
</form>
@endsection

Patch route:

Route::patch('/profile/{username}/update', 'UsersController@updateProfile')->name('updateProfile');

UserController:

public function updateProfile(Request $request, User $user){
        $this->validate($request, [
            'first_name' => 'required',
            'last_name' => 'required',
            'username' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6|confirmed'
        ]);

        $user->first_name = request('first_name');
        $user->last_name = request('last_name');
        $user->username = request('username');
        $user->email = request('email');
        $user->password = bcrypt(request('password'));

        $user->save();

        return back();
    }

PagesController:

public function settings(){
        $user = Auth::user();
        return view('settings', compact('user'));
    }

1 Ответ

0 голосов
/ 13 мая 2018

Если вы используете привязку модели, то все, что вам нужно сделать, это изменить параметр маршрута {username}, чтобы он соответствовал аргументу User:

Route::patch('/profile/{user}/update', 'UsersController@updateProfile')->name('updateProfile')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...