Пытаюсь сохранить здесь свой проект Laravel, позволяя ему расти.
В настоящее время использую:
Route::controller('/admin', 'AdminController');
... чтобы позволить контроллеру обслуживать общие страницы администратора. Это работает нормально, однако я хотел бы делегировать определенные подзапросы другим контроллерам из соображений чистоты.
Например, я бы хотел, чтобы / admin / dashboard преобразовался в AdminController @ getDashboard . Я также хотел бы, чтобы / admin / gallery / разрешал AdminGalleryController @ getIndex , а / admin / foo / bar разрешал AdminFooController @ getBar .
Есть ли простой способ постепенно расширять такую функциональность?
Мы перешли на Laravel 5 и 5.1, и это по-прежнему остается хорошим способом решения задач. Если вы не используете группы маршрутов в Laravel, значит, вы делаете Laravel неправильно.
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');
});
Да. Просто объявите маршруты «исключения» перед маршрутом основного контроллера.
Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
Похожие вопросы
Новые вопросы
laravel
Платформа Laravel — это веб-инфраструктура PHP с открытым исходным кодом, которая позволяет разработчикам создавать динамические и масштабируемые веб-приложения. Исходный код Laravel размещен на GitHub и выпущен под лицензией MIT.