是否可以调用自己的控制器操作来处理Ajax请求上异常错误消息的显示?
Yii网站上已经写了一个关于这个主题的wiki,但它似乎已经过时了。自从作者编写wiki以来,类CErrorHandler似乎已经更改。wiki建议在配置文件中添加以下组件属性:
'errorHandler' => array(
'errorAction' => 'site/error',
),
但从未达到此控制器操作,因为在CErrorHandler中调用了CApplication::displayError()。
if($this->isAjaxRequest())
$app->displayError($event->code,$event->message,$event->file,$event->line);
回到我最初的问题,我可以设置自己的控制器操作来处理Ajax请求上错误消息的显示吗?
您可以尝试制作这样的东西:
$handler=$app->getErrorHandler();
$handler->errorAction='my/error';
没有对此进行测试,但可能有效。
此外,您还可以将错误推送到ajax成功调用。
实现您想要做的事情的一种方法是替换(或扩展)CErrorHandler
类。
很可能,您必须重新实现handle($event)
、handleException
或handleError
。但是,您也可以将isAjaxRequest
修改为始终返回false,这样它的行为将与往常一样。
以下是您需要执行的步骤:
在protected/ErrorHandler.php
:中
<?php
/**
* ErrorHandler is the customized error handler for the application.
*/
class ErrorHandler extends CErrorHandler {
public function handle($event) {
// do something special ...
parent::handle($event);
}
// more special things ...
}
在protected/config/main.php
:中
return array(
// ...
'components'=>array(
// ...
'errorHandler'=>array(
'class' => 'ErrorHandler',
// ...
),
// ...
),
// ...
);
我希望它能有所帮助!