Laravel 所有者编辑员工时不带参数的路由

Laravel routes with no parameter when owner edits employees

我正在使用Laravel 8,我遇到了这种情况。只有具有所有者角色的用户才能更新其员工。我有一个 table 用于所有者、经理和员工,其结构如下所示。

id company_id role_id other_fields

我知道如何授权所有者或经理修改员工数据并阻止不属于该特定公司的用户访问其他公司的页面。

但是,我不希望员工的 ID 出现在地址上,以避免在用户进行假设操作后返回 404 页面。我需要的是类似下面的内容。

my-domain.myapp/en/edit-employee/1

会变成这样

my-domain.myapp/en/edit-employee/

但要精确指向该员工的编辑页面。

如何将员工 ID 传递给控制器​​而不通过路由传递并在编辑页面上看到正确的员工?

您可以在请求正文中将其作为 post 参数发送,例如:


$response = Http::update('http://example.com/en/edit-employee/', [
    'user_id' => '12',
]);

然后你可以像

一样检索请求正文

class DemoController extends Controller
{
    public function update(Request $request)
    {
        $name = $request->input('user_id');
    }
}

综上所述,我认为按照您现在的方式进行操作没有问题。毕竟,如果用户输入一个随机 ID,如果他没有被授权,他将无法访问,如果该 ID 根本不存在,显示 404 页面(或将用户重定向到另一条路线)也没有坏处.