Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel以干净的方式排除了足智多谋的功能_Php_Laravel_Laravel 6 - Fatal编程技术网

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}
(HTTP
GET
)在浏览器中,路由器将抛出
此路由不支持GET方法。支持的方法:PUT、PATCH、DELETE。
错误。发生这种情况是因为路由器仍然有此路由,但对于
PUT
PATCH
DELETE
,则应用程序崩溃

所以,如果有人无意中进入了“显示”页面,也许您需要显示HTTP404。 我更喜欢添加路线(这应该是您路线中的最后一条路线!

Route::回退(函数(){
中止(404);
});

谢谢,但我不想重写/重写函数。我的问题基本上是这一点得到了Laravel的支持。不过这是一个很好的解决方案。我想就是这样:)。谢谢,虽然我没有找到我想要的!再次感谢您打开了可能性之门。:)