我能够在我的模块中呈现指定的错误页面,但是我无法在模块之外获得错误布局。
这很奇怪,在我的主配置中我有:
'errorHandler'=>array(
'errorAction'=> '//site/error',
),
我尝试通过将其更改为// site / contact来查看是否指向了正确的文件,并查看是否在出现错误时呈现联系页面。它确实显示出来。
所以路径是正确的,那么为什么它没有显示错误页面?它显示带有异常错误的默认白页。异常页面是我期待的,但它的格式不是。
public function actionError()
{
$this->layout = '/layouts/main';
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', array('error'=>$error));
}
}
答案 0 :(得分:1)
您的用户角色无权访问控制器中的actionError()
。
在站点控制器中,您可以看到名为public function accessRules()
的函数。
检查error
是为某个用户角色添加的,还是仅用于管理员。
如果找不到error
,则将其添加到用户角色。
示例:强>
public function accessRules()
{
return array(
array('allow',
'actions' => array('index', 'view', 'error'),
'users' => array('@')
),
..
..
..
}
答案 1 :(得分:0)
您需要在errorXXX
中创建views/system
。 XXX代表错误代码,在这种情况下很可能是403.有关更多信息,请参阅Yii网站上的this page。