Yii:如何显示ajax调用期间生成的异常的自定义视图

时间:2013-07-23 16:35:50

标签: php ajax exception yii

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

2 个答案:

答案 0 :(得分:0)

您可以尝试制作以下内容:

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

没有测试过,但可能有用。

您也可以将错误推送到ajax成功通话。

答案 1 :(得分:0)

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

最有可能的是,您必须重新实施handle($event)handleExceptionhandleError。但是,您也可以修改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',
            // ...
            ),
        // ...
    ),
    // ...
);

我希望它有所帮助!