【问题标题】:Laravel form action sending values and idLaravel 表单动作发送值和 id
【发布时间】:2022-01-05 02:11:35
【问题描述】:

允许管理员更改用户或员工角色的提交表单,错误显示 Missing required parameter for [Route: updateRolePermission] [URI: admin/edit-role-permission/{id}] [Missing parameter: id]我与这个问题斗争了好几个小时,大家可以帮忙谢谢!!!!!!

<form action="{{ route('updateRolePermission'), ['id' =>$user->id] }}" method="POST">
    @csrf
    <select name="roles">
    <option value="user">User</option>
    <option value="staff">Staff</option>
    </select>
    <input type="submit">
</form>
Route::group(['prefix'=>'admin', 'middleware'=>['isAdmin','auth']], function(){
    Route::get('dashboard', [AdminController::class, 'index'])->name('admin.dashboard');
    Route::get('role-permission', [AdminController::class, 'rolePermission'])->name('admin.rolePermission');

    //it doesnt work!!!!
    Route::get('edit-role-permission/{id}', [AdminController::class, 'editRolePermission'])->name('updateRolePermission');
});
    function editRolePermission($id)
    {
        $row = DB::table('users')
                ->where('id',$id)
                ->limit(1)
                ->update(array('role' => 'fdas'));

        return redirect()->back();
    }

【问题讨论】:

  • 你的路由是GET方法,而你的表单是POST方法。
  • Route::get(... 应该是Route::post(...
  • 谢谢!!,新问题,现在,我可以发送 id,但是角色。
  • 还有一个错字:route('updateRolePermission'), ['id' =&gt;$user-&gt;id] 应该是route('updateRolePermission', ['id' =&gt;$user-&gt;id])。投票结束这是一个错字(GET/POST 和路由错字)
  • 问题解决后请勿更改。如果您还有其他问题,请发布新问题。我回滚了你的更新。如果您更改它,以前的 cmets/answers 对未来的访问者都没有任何意义。如果它是帮助您解决问题的特定答案,请接受该答案

标签: php laravel routes


【解决方案1】:

改变这一行:

action="{{ route('updateRolePermission'), ['id' =>$user->id] }}"

到这里:

action="{{ route('updateRolePermission', $user->id) }}"

【讨论】:

  • 啊,...有一个错字。他们在争论之前关闭了路线。应该在评论中指出这一点,然后投票关闭作为一个错字。所以问题不在于数组,而在于那个错字。这就是为什么在答案中添加解释以指出问题所在很重要,否则很容易错过。
  • 在文档中,示例为route('profile', ['id' =&gt; 1])。您可以在我的答案中使用语法,也可以将 , ['id' =&gt;$user-&gt;id] 放在括号内。
  • 我注意到了,请阅读我之前的评论。
  • 我在阅读您的评论之前发表了我的评论,反正没关系。
【解决方案2】:

首先你的路由是GET 方法,而你的表单是POST 方法。

对于$id,您可以通过以下方式在控制器中获取它:

$id = \Route::current()->parameter('id');

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多