2

是否可以调用我自己的控制器操作来处理 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 请求中错误消息的显示吗?

4

2 回答 2

0

实现您想要做的事情的一种方法是替换(或扩展)CErrorHandler类。

最有可能的是,您将不得不重新实现handle($event)orhandleExceptionhandleError。但是,您也可以修改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',
            // ...
            ),
        // ...
    ),
    // ...
);

我希望它有帮助!

于 2013-08-14T20:10:11.083 回答
0

你可以尝试做这样的事情:

$handler=$app->getErrorHandler();
$handler->errorAction='my/error';

没有对此进行测试,但可能会起作用。

您也可以将错误推送到 ajax 成功调用。

于 2013-07-24T14:28:30.747 回答