Laravel 6.x: метод обновления в UserController - PullRequest
0 голосов
/ 30 января 2020

Привет всем, я позволю себе прийти к вам, потому что я действительно столкнулся с проблемой, когда я хочу реализовать метод обновления в моем пользовательском контроллере, он не работает, я объясняю два. Когда я go смотрю в свое издание о борьбе, мои данные хороши, но когда я изменяю их и отправляю, ничего не происходит, я просто возвращаюсь на страницу с сообщением о том, что мои данные в моей таблице обновлены. обновить данные, которые я присоединяю, мой контроллер видел меня и мои маршруты

Контроллер:

public function update(Request $request, User $user)
{
    // $user = User::findOrFail($id);

    $request->validate([
        'firstname' => 'required',
        'name' => 'required',
        'email' => 'required',
        'usertype' => 'required',
    ]);

    $user->update($request->all());

    return redirect('/role-register')->with('status', 'The account is update !');
}

Редактировать вид:

<div class="container">
        <div class="row">
            <div class="col-md-12">

                <div class="card">
                    <div class="card-header">
                        <h4>Edit register roles</h4>
                    </div>
                    <div class="card-body">

                            <form action="{{ route('role.update', ['id', $users->id]) }}" enctype="multipart/form-data" method="POST">
                                @csrf
                            @method('PUT')
                                <div class="form-group">
                                    <label>First Name</label>
                                    <input type="text" name="firstname" value="{{ $users->firstname }}" class="form-control">
                                </div>

                                <div class="form-group">
                                    <label>Name</label>
                                    <input type="text" name="name" value="{{ $users->name }}" class="form-control">
                                </div>

                                <div class="form-group">
                                    <label>Email</label>
                                    <input type="email" name="email" value="{{ $users->email }}" class="form-control">
                                </div>

                                <div class="form-group">
                                    <label>Give role</label>
                                    <select name="usertype" class="form-control" value="{{ $users->usertype }}">
                                        <option value="admin">Admin</option>
                                        <option value="user">user</option>
                                    </select>
                                    <button type="submit" class="btn btn-success">Update</button>
                                    <a href="{{ route('role.register') }}" class="btn btn-danger">Cancel</a>
                                </div>
                            </form>

                    </div>
                </div>

            </div>
        </div>
    </div>

Маршрут:

Route::group(['middleware' => ['auth', 'admin']], function () {

    Route::get('/dashboard', function () {
        return view('admin.dashboard');
    })->name('dashboard');

    Route::get('/role-register', 'Admin\DashboardController@registered')->name('role.register');

    Route::get('/role-edit/{id}', 'Admin\DashboardController@edit')->name('role.edit');

    Route::put('/role-register-update/{id}', 'Admin\DashboardController@update')->name('role.update');

    Route::delete('/role-delete/{id}', 'Admin\DashboardController@destroy')->name('role.delete');

    Route::get('/cutomers', function () {
        return view('admin.customer');
    })->name('customers.list');
});

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 30 января 2020

при использовании привязки модели вы должны использовать одно и то же слово в маршруте

Route::put('/role-register-update/{user}', 'Admin\DashboardController@update')->name('role.update');

public function update(Request $request, User $user)
{
    .....
    $user->update($request->all());

    return redirect('/role-register')->with('status', 'The account is update !');
}

<form action="{{ route('role.update', ['user', $users->id]) }}" enctype="multipart/form-data" method="POST">

иначе

Route::put('/role-register-update/{id}', 'Admin\DashboardController@update')->name('role.update');

    public function update(Request $request,$id)
    {
        $user = User::findOrFail($id);
        .....
        $user->update($request->all());

        return redirect('/role-register')->with('status', 'The account is update !');
    }
0 голосов
/ 30 января 2020

Убедитесь, что эти входы добавлены к $fillable в вашей User.php модели

class User extends Authenticatable
{
   ...
   protected $fillable = [
     'firstname' => 'required',
     'name' => 'required',
     'email' => 'required',
     'usertype' => 'required',
   ];
....

Попробуйте это в вашем контроллере и дайте мне знать, что происходит:

...
   $updated = $user->update($request->all());
   if($updated){
    return redirect('/role-register')->with('status', 'The account is update !');
   }else{
       return redirect('/role-register')->with('status', 'Could not update');
   }

In Ваш веб. php обновление файла с

Route::put('/role-register-update/{id}

На

Route::put('/role-register-update/{user}

Или измените метод контроллера с

...Request $request, User $user){...

К

...Request $request, User $id){...

...