3 回答
TA貢獻1798條經(jīng)驗 獲得超3個贊
這個問題已經(jīng)很老了,但我只是面對同樣的問題,并以這種方式解決它:
Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
], [
'except' => ['show']
// you can set here other options e.g. 'only', 'except', 'names', 'middleware'
]);
根據(jù)源代碼,方法不可鏈接,因為它返回 。但是,您仍然可以將選項傳遞到 的第二個參數(shù)中。resourcesvoidresources
這是“拉雷爾方式”,您沒有覆蓋任何供應(yīng)商代碼。
在這里挖掘以獲取更多信息,它是如何工作的。
請注意,如果要排除方法,但嘗試在瀏覽器中訪問(HTTP ),路由器將拋出錯誤。發(fā)生這種情況是因為路由器仍然具有此路由,但對于 、 和 。然后您的應(yīng)用程序崩潰。show/users/{user}GETThe GET method is not supported for this route. Supported methods: PUT, PATCH, DELETE.PUTPATCHDELETE
因此,如果有人不小心轉(zhuǎn)到“顯示”頁面,也許您希望顯示HTTP 404。我更喜歡添加后備路由(這應(yīng)該是你的路由的最后一個路由!)
Route::fallback(function () {
abort(404);
});
TA貢獻1829條經(jīng)驗 獲得超7個贊
您可以編寫自己的類來擴展和實現(xiàn)您的方法,如下所示:Illuminate\Routing\Routeresources
namespace App\Extends;
class Route extends Illuminate\Routing\Route {
public function resources($routes, array $excepts) {
foreach ($routes as $key => $value){
$this->resource($key, $value)->except($excepts);
}
}
}
之后,您需要在服務(wù)提供程序中綁定類,如下所示:
public function register()
{
$this->app->bind('Illuminate\Routing\Route', 'App\\Extends\\Route');
}
并呼叫網(wǎng)絡(luò).php如下所示:resources
Route::resources([
'campaigns' => 'CampaignController',
'users' => 'UserController',
'models' => 'ModelController',
'trims' => 'TrimController'
], ['show']);
[編輯 1]
從 laravel.com/docs/5.8/controllers#resource-controllers
您可以通過將數(shù)組傳遞給 resources 方法一次注冊多個資源控制器:
Route::resources([
'photos' => 'PhotoController',
'posts' => 'PostController'
]);
但我不知道你是否可以這樣打電話->except(['show'])
Route::resources([])->except(['show'])
TA貢獻1829條經(jīng)驗 獲得超4個贊
如果你談?wù)摽赡苄?,那么是的,正如上面提到的答案所提到的,這是可能的,但默認情況下你不能
看看這個文件,
/供應(yīng)商/拉拉維爾/框架/src/照明/支持/立面/路線.php
* @method static \Illuminate\Routing\PendingResourceRegistration resource(string $name, string $controller, array $options = []) * @method static void resources(array $resources)
- 3 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報
