Php Laravel以干净的方式排除了足智多谋的功能
目前我在Php Laravel以干净的方式排除了足智多谋的功能,php,laravel,laravel-6,Php,Laravel,Laravel 6,目前我在web.php文件中有这4条资源丰富的路径 Route::resource('campaigns', 'CampaignController')->except(['show']); Route::resource('users', 'UserController')->except(['show']); Route::resource('models', 'ModelController')->except(['show']); Route::resource('tr
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()方法
Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
])->except(['show']);
它想要这样的东西。(此示例不起作用,因为resources()
没有except()
方法
Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
])->except(['show']);
您可以编写自己的类来扩展
illighted\Routing\Route
,并实现resources
方法,如下所示:
namespace-App\Extends;
类路由扩展为\Routing\Route{
公共功能资源($routes,array$excepts){
foreach($key=>$value的路由){
$this->resource($key,$value)->除外($excepts);
}
}
}
之后,您需要在服务提供商中绑定类,如下所示:
公共函数寄存器()
{
$this->app->bind('light\Routing\Route','app\\Extends\\Route');
}
然后在web.php中调用resources
,如下所示:
Route::resources([
“活动”=>“活动控制器”,
“用户”=>“用户控制器”,
“模型”=>“模型控制器”,
“trims”=>“TrimController”
],[show']);
[编辑1]
从
通过将数组传递给resources方法,可以同时注册多个资源控制器:
Route::resources([
“照片”=>“光电控制器”,
“posts”=>“PostController”
]);
但是我不知道你是否可以打电话给->,除了(['show'])
那样的电话
Route::resources([])->除了(['show'])
如果您谈论可能性,那么是的,正如上述答案所述,这是可能的,但默认情况下您不能
看看这个文件
/供应商/laravel/framework/src/illumb/Support/Facades/Route.php
这个问题已经很老了,但我只是面对同样的问题,并以这种方式解决了它:
Route::resources([
“活动”=>“活动控制器”,
“用户”=>“用户控制器”,
“模型”=>“模型控制器”,
“trims”=>“TrimController”
], [
'除了'=>['show']
//您可以在此处设置其他选项,例如“仅”、“除”、“名称”、“中间件”
]);
根据源代码,方法resources
是不可链接的,因为它返回void
。但是您仍然可以将选项传递到resources
的第二个参数中
这是“Larawel方式”,您没有覆盖任何供应商代码
挖掘以获取更多信息,了解其工作原理
请注意,如果要排除
show
方法,但尝试访问/users/{user}
(HTTPGET
)在浏览器中,路由器将抛出此路由不支持GET方法。支持的方法:PUT、PATCH、DELETE。
错误。发生这种情况是因为路由器仍然有此路由,但对于PUT
、PATCH
和DELETE
,则应用程序崩溃
所以,如果有人无意中进入了“显示”页面,也许您需要显示HTTP404。
我更喜欢添加路线(这应该是您路线中的最后一条路线!)
Route::回退(函数(){
中止(404);
});
谢谢,但我不想重写/重写函数。我的问题基本上是这一点得到了Laravel的支持。不过这是一个很好的解决方案。我想就是这样:)。谢谢,虽然我没有找到我想要的!再次感谢您打开了可能性之门。:)