Laravel: BaseController 构造中使用的 beforeFilter 在子类中不起作用
Laravel: beforeFilter used in BaseController construct doesn't work in subclasses
我阅读了 Laravel 的有关 controller filters 的文档。我希望将此功能正确应用到我的 BaseController,因此所有扩展它的控制器都可以自动 运行 beforeFilter
。但是,需要排除其中两条路线。排除的路由名为 home 和 logout,但下面的代码不起作用:customFilter
被扩展 BaseController 的类忽略.我做错了什么?
routes.php:
Route::get('/',
array(
'before' => 'auth',
'uses' => 'DefaultController@index',
'as' => 'home'
)
);
Route::get('/logout',
array(
'before' => 'auth',
'uses' => 'UserController@logout',
'as' => 'logout'
)
);
Route::get('/profile',
array(
'before' => 'auth',
'uses' => 'UserController@profile',
'as' => 'profile'
)
);
/// And so on...
BaseController.php:
<?php
class BaseController extends Controller {
// beforeFilter to be inherited by subclasses
public function __construct() {
$this->beforeFilter('customFilter', array('except' => array('home', 'logout')));
}
// Rest of the code
}
?>
以后(例如):
<?php
class UserController extends BaseController {
// Code...
}
?>
你必须像这样在子 class 中构造父:
class UserController extends BaseController {
public function __construct(){
parent::__construct();
}
}
我阅读了 Laravel 的有关 controller filters 的文档。我希望将此功能正确应用到我的 BaseController,因此所有扩展它的控制器都可以自动 运行 beforeFilter
。但是,需要排除其中两条路线。排除的路由名为 home 和 logout,但下面的代码不起作用:customFilter
被扩展 BaseController 的类忽略.我做错了什么?
routes.php:
Route::get('/',
array(
'before' => 'auth',
'uses' => 'DefaultController@index',
'as' => 'home'
)
);
Route::get('/logout',
array(
'before' => 'auth',
'uses' => 'UserController@logout',
'as' => 'logout'
)
);
Route::get('/profile',
array(
'before' => 'auth',
'uses' => 'UserController@profile',
'as' => 'profile'
)
);
/// And so on...
BaseController.php:
<?php
class BaseController extends Controller {
// beforeFilter to be inherited by subclasses
public function __construct() {
$this->beforeFilter('customFilter', array('except' => array('home', 'logout')));
}
// Rest of the code
}
?>
以后(例如):
<?php
class UserController extends BaseController {
// Code...
}
?>
你必须像这样在子 class 中构造父:
class UserController extends BaseController {
public function __construct(){
parent::__construct();
}
}