具有相同路径名的两个不同控制器

时间:2014-08-13 21:24:54

标签: laravel laravel-4 laravel-routing

假设我有两个名为Client\DashboardControllerAdmin\DashboardControllerroutes.php的控制器包含以下内容:

Route::get('admin/', [
    'uses' => 'Admin\DashboardController',
    'as'   => 'dashboard'
]);

Route::get('client/', [
    'uses' => 'Client\DashboardController',
    'as'   => 'dashboard'
]);

两个控制器位于不同的命名空间中,但共享一个视图。在我看来,我想做以下事情:

<a href="{{ route('dashboard') }}">home</a>

并且取决于url前缀,它应该映射到正确的控制器,但问题是它始终映射到客户端控制器。

1 个答案:

答案 0 :(得分:0)

这就像想要拥有两个同名的函数只是为了它而抱怨编译器没有做你想做的事。

只需命名您的路线,它将使您的生活(调试和维护)更容易:

Route::get('admin/', [
    'uses' => 'Admin\DashboardController',
    'as'   => 'admin.dashboard'
]);

Route::get('client/', [
    'uses' => 'Client\DashboardController',
    'as'   => 'client.dashboard'
]);

然后:

<a href="{{ route('admin.dashboard') }}">home</a>
<a href="{{ route('client.dashboard') }}">home</a>