2016-11-09 333 views
1

我有我的本地机器上这个应用程式laravel 5.3使用两个controllers解决laravel 5.3路由名称冲突

AdminUsersController和AgentUsersController

现在,我通过以下方式设置其routes

Route::group(['middleware' => 'admin'], function(){ 


    Route::get('/admin', function(){ 
    return view('admin.index'); 
    }); 


    Route::resource('admin/users', 'AdminUsersController'); 

    Route::resource('admin/posts', 'AdminPostsController'); 
}); 


Route::group(['middleware' => 'agent'], function(){ 

    Route::get('/agent', function(){ 
    return view('agent.index'); 
    }); 

    Route::resource('agent/posts', 'AgentPostsController'); 

}); 

当我list在此与php artisan route:list的路线我g等下了进来:

+--------+-----------+-------------------------+---------------+------------------------------------------------------------------------+--------------+ 
| Domain | Method | URI      | Name   | Action                 | Middleware | 
+--------+-----------+-------------------------+---------------+------------------------------------------------------------------------+--------------+ 
|  | GET|HEAD |/      |    | Closure                | web   | 
|  | GET|HEAD | admin     |    | Closure                | web,admin | 
|  | GET|HEAD | admin/posts    | posts.index | App\Http\Controllers\[email protected]      | web,admin | 
| 
|  | GET|HEAD | agent/posts    | posts.index | App\Http\Controllers\[email protected]      | web,agent | 
|  | POST  | agent/posts    | posts.store | App\Http\Controllers\[email protected]      | web,agent | 

注意,URI agent/postsnameposts.index,而且URI admin/postsnameposts.index

现在在我的blade template当我添加routeadmin user像这样{{route('posts.index')}}。我得到URI mydomain/agent/posts而不是mydomain/admin/posts。如何让routeblade知道URIs选择哪一个。

我知道我也可以用URL('/admin/posts')来挑选合适的人,但我想知道是否可以使用route方法。

回答

1

是的,你可以覆盖你的一个资源控制器的名字!只是通过另一种说法到资源的方法,提供与“名”的关键字作为索引,另一个数组作为值的数组:

Route::resource('agent/posts', 'AgentPostsController', ['names' => [ 
    'index' => 'agent.posts.index' 
]]); 
+0

为什么不能'laravel'解决此基础上我的'角色authentication'添加到应用程序。 –

+0

@udoyen有许多方法可以更改不同角色/用户类型的路由,但这不是您要求的。 – manniL