имена маршрутов внутри префикса группы не включают префикс - PullRequest
1 голос
/ 12 марта 2020

У меня есть следующие маршруты:

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 и маршруты пользователей имеют одинаковые имена, а имена не включают префикс.

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Решение Кербхольца не работает, но оно помогло мне решить.

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');
});
1 голос
/ 12 марта 2020

Измените ваши маршруты, чтобы иметь префикс и промежуточное программное обеспечение вне группы:

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');
});

https://laravel.com/docs/6.x/routing#route -групп

...