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' =>$user->id]
应该是route('updateRolePermission', ['id' =>$user->id])
。投票结束这是一个错字(GET/POST 和路由错字)
问题解决后请勿更改。如果您还有其他问题,请发布新问题。我回滚了你的更新。如果您更改它,以前的 cmets/answers 对未来的访问者都没有任何意义。如果它是帮助您解决问题的特定答案,请接受该答案
【参考方案1】:
改变这一行:
action=" route('updateRolePermission'), ['id' =>$user->id] "
到这里:
action=" route('updateRolePermission', $user->id) "
【讨论】:
啊,...有一个错字。他们在争论之前关闭了路线。应该在评论中指出这一点,然后投票关闭作为一个错字。所以问题不在于数组,而在于那个错字。这就是为什么在答案中添加解释以指出问题所在很重要,否则很容易错过。 在文档中,示例为route('profile', ['id' => 1])
。您可以在我的答案中使用语法,也可以将 , ['id' =>$user->id]
放在括号内。
我注意到了,请阅读我之前的评论。
我在阅读您的评论之前发表了我的评论,反正没关系。【参考方案2】:
首先你的路由是GET
方法,而你的表单是POST
方法。
对于$id
,您可以通过以下方式在控制器中获取它:
$id = \Route::current()->parameter('id');
【讨论】:
以上是关于Laravel 表单动作发送值和 id的主要内容,如果未能解决你的问题,请参考以下文章