【问题标题】:Laravel 6.x : Update method in UserControllerLaravel 6.x:UserController 中的更新方法
【发布时间】:2020-05-16 09:03:44
【问题描述】:

大家好,我允许自己来找你们,因为当我想在我的用户控制器中实现更新方法时,我确实遇到了一个问题,它不起作用我解释两个。当我进入摔跤比赛的版本视图时,我的数据很好,但是当我修改它并发送它时,什么也没发生我加入我的控制器看到了我和我的路线

控制器:

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');
});

谢谢你的帮助

【问题讨论】:

标签: php laravel eloquent laravel-6


【解决方案1】:

确保将这些输入添加到您的User.php 模型中的$fillable

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');
   }

在你的 web.php 文件中更新

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

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

或者改变控制器的方法

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

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

【讨论】:

  • 您好,已通过验证,这和您一样:(
  • 你知道它已经更新了,因为你有这样的编码 `return redirect('/role-register')->with('status', 'The account is update !');`
  • ... $updated = $user->update($request->all()); if($updated){ return redirect('/role-register')->with('status', '账号正在更新!'); }else{ return redirect('/role-register')->with('status', 'Could not update'); }
  • 是的,但现在您应该得到“无法更新”的信息,对吧?
  • 你会得到什么?
【解决方案2】:

当你使用模型绑定时,你必须在路由中使用相同的词

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 !');
    }

【讨论】:

  • 当我使用你的方法并点击更新时,我有一个类似的错误:在 null 上调用成员函数 update() 但它不是 null,因为我有用户
  • 第一还是第二?你在用户表中的 PK 是什么?
  • 我的PK?这是什么?
  • 主键?如果您的 Pk 与 name id 不同,那么您必须在模型中定义您的 PK protected $primaryKey = 'your_user_pk';
  • 我的 PK 是我在用户表上的 id
猜你喜欢
  • 2020-04-18
  • 2020-03-31
  • 1970-01-01
  • 2017-09-14
  • 2020-06-07
  • 2020-03-04
  • 2020-03-28
  • 2019-02-22
  • 2021-12-25
相关资源
最近更新 更多