Пытаюсь сохранить здесь свой проект Laravel, позволяя ему расти.

В настоящее время использую:

Route::controller('/admin', 'AdminController');

... чтобы позволить контроллеру обслуживать общие страницы администратора. Это работает нормально, однако я хотел бы делегировать определенные подзапросы другим контроллерам из соображений чистоты.

Например, я бы хотел, чтобы / admin / dashboard преобразовался в AdminController @ getDashboard . Я также хотел бы, чтобы / admin / gallery / разрешал AdminGalleryController @ getIndex , а / admin / foo / bar разрешал AdminFooController @ getBar .

Есть ли простой способ постепенно расширять такую ​​функциональность?


Мы перешли на Laravel 5 и 5.1, и это по-прежнему остается хорошим способом решения задач. Если вы не используете группы маршрутов в Laravel, значит, вы делаете Laravel неправильно.

0
Derrek Bertrand 20 Фев 2015 в 18:38

2 ответа

Лучший ответ

Вы также можете определить эти другие маршруты как маршруты контроллера. Просто сделайте это до Route::controller('admin'), потому что Laravel ищет зарегистрированные маршруты в других, которые вы определяете. Поскольку /admin/gallery будет соответствовать Route::controller('admin'), а также Route::controller('admin/gallery'), последнее должно быть определено первым:

Route::controller('admin/gallery', 'AdminGalleryController');
Route::controller('admin/foo', 'AdminFooController');
Route::controller('admin', 'AdminController');

Вместо того, чтобы писать admin каждый раз, когда группа маршрутов также может быть хорошим улучшением:

Route::group(['prefix' => 'admin'], function(){
    Route::controller('gallery', 'AdminGalleryController');
    Route::controller('foo', 'AdminFooController');
    Route::controller('/', 'AdminController');
});
2
lukasgeiter 20 Фев 2015 в 16:13

Да. Просто объявите маршруты «исключения» перед маршрутом основного контроллера.

Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
1
Joe 20 Фев 2015 в 16:16