不同命名空间中的类似路由名称

时间:2016-07-28 08:10:43

标签: php laravel laravel-5 laravel-5.2

所以在我的routes.php中我有

Route::group(['namespace' => 'Cp', 'prefix' => 'cp'], function()
{
    Route::get('/shop' , 'ShopController@index')->name('shop_index');
});

 Route::get('/shop' , 'ShopController@index')->name('shop_index');

基本上2个类似的地址1用于Cp命名空间和目录中的管理区域,而其他用于客户端

所以在我的管理员viwe,当我想链接到这个页面我有

<A href="{{route('shop_index')}}"> shop </A>

哪个不会工作因为我有2个不同的路线,同名,所以我必须将其中一个名称更改为shop_index_cp

无论如何以某种方式在那里使用命名空间并避免这种情况?像

<A href="{{route('Cp\shop_index')}}"> shop </A>

2 个答案:

答案 0 :(得分:0)

namespace 属性仅用于告知路由器控制器的基本命名空间是什么。它不会影响路径名称或引用它们的方式。没有办法使用命名空间来引用类似的路由 - 只使用确切的名称,因此使名称唯一是唯一的方法

答案 1 :(得分:0)

您不了解命名空间的用途,它对路由名称没有任何影响,路由名称必须是唯一的,即使它在单独的路由组中定义,如果您将控制器分隔到{{1等等..
在这种情况下,您可以将组的命名空间定义为CP\ShopController, CP\UserController,这样您就可以直接将控制器函数称为CP,而不是将其称为Route::get('/shop' , 'ShopController@index')