在Yii的config.php中,我们有这样的语句,声明哪个Controller是应用程序中的默认控制器,只有一个错误处理程序:
'errorHandler' => array(
'errorAction' => 'site/error',
),
因此,我需要在 SiteController 下设置一个actionError()
,以便在我的网站中预览错误,但这不是我真正需要的。
我试图在扩展基座Yii::app()->errorHandler->errorAction
(Yii的基本控制器)的自定义控制器中动态更改CController
。
直到现在,我尝试过这样的事情:
<?php
class AdminController extends CController {
public $layout = '//layouts/admin';
public function init() {
parent::init();
Yii::app()->errorHandler->errorAction = '/admin/error';
}
}
但是没有结果,也没有希望。请注意,我也有此URL配置:
'/admin' => '/admin/home',
'/admin/<controller:\w+>' => '/admin/<controller>',
'/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>',
'/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>',
这意味着我有一个名为 admin 的完整 Controllers-Views 组,它们存储在以下目录中:
所以按照这个逻辑,我在 admin 和 controllers root 中都有 ErrorController ,并且在中使用相同的结构意见目录。
这就是我尝试过的,我真的很感谢帮助,所以提前谢谢你们!
答案 0 :(得分:2)
你应该试试这个:
Yii::app()->setComponents(array(
'errorHandler'=>array(
'errorAction'=>'/admin/error'
)
));
http://www.yiiframework.com/doc/api/1.1/CModule#setComponents-detail