2016-11-09 192 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