我知道这里有门票,这些门票正在谈论类似的情况,但我找不到能满足我情况的答案。
我试图执行以下操作:
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看起来像这样:
命名空间Admin;
使用BaseController; 使用View;
class PageController extends BaseController {
public function getIndex() {
return View::make('Admin.page.index');
}
}
答案 0 :(得分:2)
我只是想通过在您的路由中明确指出 - 仅使用Route::get/post/delete etc
而不是Route::controller
或Route::resource
- 您可以避免此类问题以及其他许多问题。 Route::controller
尤其被视为不良行为。
答案 1 :(得分:0)
好的 - 经过一段时间的试验后,答案似乎是按照您将电话放入群组的顺序。
当我在嵌套组后调用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');
}
);
遗憾的是,这样一个重要的方面并没有记录在任何地方 - 尽管如此 - 它有效!