You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何识别表单点击的按钮 区分修改角色与删除用户操作

实现方案

现有路由配置无需改动,仅需要修改表单和控制器代码即可,具体操作如下:

1. 修改表单代码

给两个提交按钮添加相同name属性和不同value属性,提交时后端可通过该参数区分操作类型,同时可给删除按钮添加点击确认避免误操作:

<form action="edit-role-permission/{{ $user->id }}" method="POST">
    @csrf

    <select name="roles">
        <option value="user">User</option>
        <option value="staff">Staff</option>
    </select>
  
    <button type="submit" name="action" value="update_role">修改角色</button>
    <button type="submit" name="action" value="delete_user" onclick="return confirm('确定要删除该用户吗?操作不可撤销')">删除用户</button>
</form>

注意:原option标签不需要加name属性,只有select标签需要配置name即可。

2. 修改控制器逻辑

判断请求携带的action参数,分别执行对应操作:

// class AdminController extends Controller
function editRolePermission(Request $request, User $user)
{
    $action = $request->input('action');
    if ($action === 'update_role') {
        // 原有更新角色逻辑
        $user->update(["role" => $request->roles]);
        return redirect()->back()->with("message", "用户角色更新成功");
    } elseif ($action === 'delete_user') {
        // 删除用户逻辑,若开启软删直接调用delete(),物理删除可调用forceDelete()
        $user->delete();
        return redirect()->back()->with("message", "用户删除成功");
    }
    return redirect()->back()->withErrors("非法操作");
}

可选优化

如果希望路由语义更清晰,也可以拆分两个路由分别处理角色更新和用户删除,从架构层面解耦两个操作,后续维护成本更低。

内容的提问来源于stack exchange,提问作者user16466807

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:42:00