Laravel 表单动作发送值和 id

Posted

技术标签:

【中文标题】Laravel 表单动作发送值和 id【英文标题】:Laravel form action sending values and 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 对未来的访问者都没有任何意义。如果它是帮助您解决问题的特定答案,请接受该答案 【参考方案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');

【讨论】:

以上是关于Laravel 表单动作发送值和 id的主要内容,如果未能解决你的问题,请参考以下文章

NSSlider:如何同时发送值和动作?

如何在 laravel 中定义表单内的动作?

Laravel 4 Form::open 设置动作

无法发送“POST”表单,jQuery 不会检测到提交动作

如何在 Laravel 5.7 和 Laravel Collective 中使用动作 [重复]

Laravel:通过无表单的 AJAX 向控制器发送数据