gpt4 book ai didi

php - Laravel 以干净的方式排除资源丰富的功能

转载 作者:行者123 更新时间:2023-12-04 00:21:42 27 4
gpt4 key购买 nike

目前我的 web.php 文件中有这 4 条资源丰富的路由。

Route::resource('campaigns', 'CampaignController')->except(['show']);
Route::resource('users', 'UserController')->except(['show']);
Route::resource('models', 'ModelController')->except(['show']);
Route::resource('trims', 'TrimController')->except(['show']);

我不禁想知道。我不能在 Route::resources 函数中添加一些东西以使其行为如此吗?这是因为他们都有一个共同点。他们 except()show() 方法。

它想要这样的东西。 (此示例不起作用,因为 resources() 没有 except() 方法。

Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
])->except(['show']);

最佳答案

这个问题已经很老了,但我刚刚遇到同样的问题并以这种方式解决了:

Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
], [
'except' => ['show']
// you can set here other options e.g. 'only', 'except', 'names', 'middleware'
]);

根据源代码,方法 resources 是不可链接的,因为它返回 void。但是您仍然可以将选项传递给 resources 的第二个参数。

这是“Larawel 方式”,您没有覆盖任何供应商代码。

挖掘 here获取更多信息,了解它的工作原理。


注意,如果你想排除 show 方法,但尝试在浏览器中访问 /users/{user} (HTTP GET) ,路由器会抛出 该路由不支持 GET 方法。支持的方法:PUT、PATCH、DELETE。 错误。发生这种情况是因为路由器仍然有这条路由,但是对于 PUTPATCHDELETE。然后你的应用程序崩溃了。

所以,如果有人不小心进入“显示”页面,您可能想要显示 HTTP 404。我更喜欢加 fallback路线(这应该是您路线的最后一条路线!)

Route::fallback(function () {
abort(404);
});

关于php - Laravel 以干净的方式排除资源丰富的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60189123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com