Laravel 5.3资源路由名称

时间:2016-10-04 17:18:02

标签: php laravel laravel-5.3

我将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

我需要将它们完全命名为。

3 个答案:

答案 0 :(得分:4)

你可以给" as" group指令中的参数,用于为所有组路由提供前缀。

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']]);
});

答案 1 :(得分:1)

我这样解决了:

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

答案 2 :(得分:-1)

为什么不将它们包装在一个组中?

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