簡體   English   中英

Laravel 5.3資源路由名稱

[英]Laravel 5.3 Resource routes names

我將Laravel 5.2應用程序升級到Laravel 5.3。 我有很多資源路線,如:

Route::resource('web/products', 'Web\ProductController', ['except' => ['show']]);
Route::resource('web/promos',   'Web\PromoController',   ['except' => ['show']]);

在Laravel 5.2之前為它們生成的路由名稱是:

web.products.index
web.products.create
web.products.store
web.products.edit
web.products.update
web.products.edit

我使用route()幫助器按名稱打印所有路由。 問題是現在Laravel 5.3正在使用以下名稱生成我的路線:

products.index
products.create
products.store
products.edit
products.update
products.edit

我需要它們完全命名空間。

您可以在group指令中給出“as”參數,為所有組路由賦予前綴。

Route::group(['as'=>'web.'], function() {
    Route::resource('web/products', 'Web\ProductController', ['except' => ['show']]);
    Route::resource('web/promos',   'Web\PromoController',   ['except' => ['show']]);
});

您也可以為url指定前綴

Route::group(['as'=>'web.','prefix'=>'web'], function() {
    Route::resource('products', 'Web\ProductController', ['except' => ['show']]);
    Route::resource('promos',   'Web\PromoController',   ['except' => ['show']]);
});

我這樣解決了:

Route::resource('web/products', 'Web\ProductController', ['names' => [
    'create' => 'web.products.create'
]]);

為什么不把它們包在一個組中?

Route::group(['namespace' => 'Web'], function() {
    Route::resource('web/products', 'ProductController', ['except' => ['show']]);
    Route::resource('web/promos',   'PromoController',   ['except' => ['show']]);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM