组前缀内的路由名称不包含前缀
route names inside a group prefix does not include the prefix
我有这些路线:
Route::group(['middleware' => ['role:admin'], 'prefix' => 'admin'], function()
{
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});
Route::group(['middleware' => ['role:user'], 'prefix' => 'user'], function()
{
Route::resource(__('route.events'), 'Auth\RoleUser\EventController');
});
我希望资源路由的名称分别以 admin.
和 user.
开头,但事实并非如此。
这是命令的结果 php artisan route:list
:
| | GET|HEAD | auth/admin/events | events.index | App\Http\Controllers\Auth\RoleAdmin\EventController@index | web,auth,role
:admin,guest,role:admin|user |
| | POST | auth/admin/events | events.store | App\Http\Controllers\Auth\RoleAdmin\EventController@store | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/create | events.create | App\Http\Controllers\Auth\RoleAdmin\EventController@create | web,auth,role
:admin,guest,role:admin|user |
| | DELETE | auth/admin/events/{events} | events.destroy | App\Http\Controllers\Auth\RoleAdmin\EventController@destroy | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/{events} | events.show | App\Http\Controllers\Auth\RoleAdmin\EventController@show | web,auth,role
:admin,guest,role:admin|user |
| | PUT|PATCH | auth/admin/events/{events} | events.update | App\Http\Controllers\Auth\RoleAdmin\EventController@update | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/{events}/edit | events.edit | App\Http\Controllers\Auth\RoleAdmin\EventController@edit | web,auth,role
:admin,guest,role:admin|user |
可以看到,admin的路由和users的路由重名,而且没有前缀。
更改您的路由以在组外使用前缀和中间件:
Route::prefix('admin')
->middleware('role:admin')
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});
Route::prefix('user')
->middleware('role:user')
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleUser\EventController');
});
kerbholz 的解决方案不起作用,但它帮助我解决了。
Route::prefix('admin')
->middleware('role:admin')
->name('admin.') // <-- I had to add this line in order to work
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});
我有这些路线:
Route::group(['middleware' => ['role:admin'], 'prefix' => 'admin'], function()
{
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});
Route::group(['middleware' => ['role:user'], 'prefix' => 'user'], function()
{
Route::resource(__('route.events'), 'Auth\RoleUser\EventController');
});
我希望资源路由的名称分别以 admin.
和 user.
开头,但事实并非如此。
这是命令的结果 php artisan route:list
:
| | GET|HEAD | auth/admin/events | events.index | App\Http\Controllers\Auth\RoleAdmin\EventController@index | web,auth,role
:admin,guest,role:admin|user |
| | POST | auth/admin/events | events.store | App\Http\Controllers\Auth\RoleAdmin\EventController@store | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/create | events.create | App\Http\Controllers\Auth\RoleAdmin\EventController@create | web,auth,role
:admin,guest,role:admin|user |
| | DELETE | auth/admin/events/{events} | events.destroy | App\Http\Controllers\Auth\RoleAdmin\EventController@destroy | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/{events} | events.show | App\Http\Controllers\Auth\RoleAdmin\EventController@show | web,auth,role
:admin,guest,role:admin|user |
| | PUT|PATCH | auth/admin/events/{events} | events.update | App\Http\Controllers\Auth\RoleAdmin\EventController@update | web,auth,role
:admin,guest,role:admin|user |
| | GET|HEAD | auth/admin/events/{events}/edit | events.edit | App\Http\Controllers\Auth\RoleAdmin\EventController@edit | web,auth,role
:admin,guest,role:admin|user |
可以看到,admin的路由和users的路由重名,而且没有前缀。
更改您的路由以在组外使用前缀和中间件:
Route::prefix('admin')
->middleware('role:admin')
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});
Route::prefix('user')
->middleware('role:user')
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleUser\EventController');
});
kerbholz 的解决方案不起作用,但它帮助我解决了。
Route::prefix('admin')
->middleware('role:admin')
->name('admin.') // <-- I had to add this line in order to work
->group(function() {
Route::resource(__('route.events'), 'Auth\RoleAdmin\EventController');
});