我在本地计算机上使用两个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');
});
当我list
使用php artisan route: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
已添加route
admin user
,因为{{route('posts.index')}}
。我得到了URI mydomain/agent/posts
而不是mydomain/admin/posts
。如何让route
blade
知道选择URIs
中的哪一个。
我知道我也可以URL('/admin/posts')
选择正确的,但我想知道是否可以使用route
方法。
答案 0 :(得分:1)
是的,您可以覆盖其中一个资源管理器的名称!只需将另一个参数传递给资源方法,提供一个带有'名称的数组'关键字作为索引,另一个数组作为值:
Route::resource('agent/posts', 'AgentPostsController', ['names' => [
'index' => 'agent.posts.index'
]]);