是否可以调用我自己的控制器操作来处理Ajax请求中异常错误消息的显示?
在Yii网站上已经就此主题撰写了一个维基,但它似乎已经过时了。自作者编写维基以来,类CErrorHandler似乎已经发生了变化。 Wiki建议将以下组件属性添加到配置文件中:
'errorHandler' => array(
'errorAction' => 'site/error',
),
但是从未到达此控制器操作,因为在CErrorHandler中调用了CApplication :: displayError()。
if($this->isAjaxRequest())
$app->displayError($event->code,$event->message,$event->file,$event->line);
回到我原来的问题,我可以设置自己的控制器操作来处理Ajax请求中错误消息的显示吗?
答案 0 :(得分:0)
您可以尝试制作以下内容:
$handler=$app->getErrorHandler();
$handler->errorAction='my/error';
没有测试过,但可能有用。
您也可以将错误推送到ajax成功通话。
答案 1 :(得分:0)
实现您想要做的事情的一种方法是替换(或扩展)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',
// ...
),
// ...
),
// ...
);
我希望它有所帮助!