我有这个应用程序在laravel 5.3在我的本地机器上使用两个controllers
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');
});
当我使用php artisan route:list
list
时,我得到以下结果:
+--------+-----------+-------------------------+---------------+------------------------------------------------------------------------+--------------+
| 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'AdminPostsController@index | web,admin |
|
| | GET|HEAD | agent/posts | posts.index | App'Http'Controllers'AgentPostsController@index | web,agent |
| | POST | agent/posts | posts.store | App'Http'Controllers'AgentPostsController@store | web,agent |
注意URI agent/posts
有name
posts.index
, URI admin/posts
有name
posts.index
。
现在在我的blade template
中,当我为admin user
添加route
时,就像{{route('posts.index')}}
一样。我得到URI mydomain/agent/posts
而不是mydomain/admin/posts
。我如何让blade
中的route
知道该选择URIs
中的哪一个。
我知道我也可以做URL('/admin/posts')
来选择正确的一个,但我想知道使用route
方法是否可能。
是的,您可以重写您的一个资源控制器的名称!只需将另一个参数传递给resource方法,提供一个数组,其中'names'关键字作为索引,另一个数组作为值:
Route::resource('agent/posts', 'AgentPostsController', ['names' => [
'index' => 'agent.posts.index'
]]);