Группа маршрутов администратора с префиксом, промежуточным ПО и именованными маршрутами

У меня есть несколько именованных маршрутов в контроллере с именем VehicleController:

vehicle.index
vehicle.show

И затем у меня есть раздел администратора, где я определил группу маршрутов с префиксом и промежуточным программным обеспечением. В этом разделе у меня есть имя контроллера ресурсов AdminVehicleController для обработки задач CRUD для Vehicle (не уверен, что это лучшая практика) со следующими маршрутами:

vehicle.index
vehicle.create
vehicle.store
...

Однако эти названные маршруты конфликтуют. Мои маршруты web.php пока выглядят так:

Route::get('vehicles', 'VehicleController@index')->name('vehicle.index');
Route::get('vehicle/{vehicle}', 'VehicleController@show')->name('vehicle.show');

Route::group(['prefix' => 'admin', 'middleware' => 'is.admin'], function () {
    Route::get('/', 'AdminDashboardController@index');
    Route::resource('vehicle', 'AdminVehicleController');
});

Если я добавлю 'name' => 'admin' в массив Route::group(), имена маршрутов будут adminvehicle.index, а не admin.vehicle.index.

Как правильно объединить все эти параметры в маршруте?


person rebellion    schedule 05.10.2019    source источник
comment
вы можете использовать as ключ, 'as'=> 'admin.', обратите внимание на . в конце admin. ref   -  person jagad89    schedule 05.10.2019
comment
Я пробовал это, но для admin (URL-адрес панели управления) именованный маршрут будет admin.. Это не большая проблема, но раздражает.   -  person rebellion    schedule 05.10.2019
comment
вы также можете назвать его dashboard, чтобы он был admin.dashboard, так что это будет намного чище.   -  person jagad89    schedule 05.10.2019


Ответы (2)


Попробуйте использовать параметр as для своей группы администраторов

Route::group(['prefix' => 'admin', 'middleware' => 'is.admin', 'as'=> 'admin.'], function () {
    Route::get('/', 'AdminDashboardController@index')->name('dashboard');
    Route::resource('vehicle', 'AdminVehicleController');
});

Ссылка Ссылка

person jagad89    schedule 05.10.2019

Предоставьте массив names как часть третьего параметра массива $options, где каждый ключ является методом контроллера ресурсов (индекс, сохранение, редактирование и т. Д.), А значение является именем, которое вы хотите дать маршруту.

    Route::resource('vehicle', 'AdminVehicleController', [
        'names' => [
            'index' => 'admin.vehicle.index',
            // etc...
        ]
    ]);
person Zain Farooq    schedule 05.10.2019