Маршрутизация Laravel: вложенный маршрут :: группа

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

Я пытаюсь сделать следующее:

Route::group(
[
'prefix' => 'admin',
'namespace' => 'Admin'
],
function() {

Route::controller('/', 'LoginController');Route::group(
[
'prefix' => '',
'before' => 'auth.admin'
],
function() {Route::controller('page', 'PageController');

Route::controller('article', 'ArticleController');}
);}
);

Когда я звоню /admin Я получаю LoginController и его представление getIndex (), но когда я звоню /admin/page — Я получил:

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

Controller method not found.

Я знаю, что вы можете вкладывать вызовы Route :: group, но, похоже, нигде не документировано, как этого добиться. Насколько я понимаю, вы должны иметь префикс, указанный при каждом вызове Route :: group — во вложенном я только что использовал пустую строку -, так как он не требует никакого дополнительного префикса, кроме родительского. Инкапсулированные вызовы контроллеров внутри вложенной группы требуют admin.auth фильтр — и это причина, по которой я хотел заключить их во вложенную группу, — а не указывать фильтр для каждого контроллера отдельно.

Есть идеи, что нужно сделать, чтобы этот сценарий работал?

Кроме того, даже если я изменю код так, чтобы он вызывал контроллеры непосредственно из родительской группы, вот так:

Route::group(
[
'prefix' => 'admin',
'namespace' => 'Admin'
],
function() {

Route::controller('/', 'LoginController');

Route::controller('page', 'PageController');

Route::controller('article', 'ArticleController');

}
);

Кажется, я получаю ту же ошибку при звонке /admin/page — PageController выглядит так:

Администратор пространства имен;

использовать BaseController;
использовать вид;

class PageController extends BaseController {public function getIndex() {

return View::make('Admin.page.index');

}}

0

Решение

Я просто скажу, что, будучи явным в вашей маршрутизации — только используя Route::get/post/delete etc и не Route::controller или же Route::resource — Вы избегаете подобных проблем и многих других. Route::controller особенно считается плохой практикой.

2

Другие решения

Хорошо — после того, как вы поэкспериментируете с ним некоторое время, ответ, по-видимому, будет в том порядке, в котором вы выполняете звонки в своей группе.

Когда я перееду, позвоните Route::controller('/', 'LoginController'); после вложенной группы — тогда все вроде нормально работает:

Route::group(
[
'prefix' => 'admin',
'namespace' => 'Admin'
],
function() {

Route::group(
[
'prefix' => '',
'before' => 'auth.admin'
],
function() {Route::controller('page', 'PageController');

Route::controller('article', 'ArticleController');}
);

Route::controller('/', 'LoginController');

}
);

Обидно, что такой важный аспект нигде не задокументирован — тем не менее — он работает!

0

По вопросам рекламы [email protected]