0

我目前正在编写一个应用程序作为 wordpress 的插件,因此我需要一些非常规的解决方案..

目前我的问题是,当 Yii 遇到错误时,它会在其错误处理程序中抛出错误,然后退出 PHP 执行。难道不应该有办法让 Yii 沙箱让它只退出它自己的执行并让外部代码继续吗?

在我的情况下,大部分页面都是空白的,并且没有任何 wordpress 主题被加载。所以设计好的错误页面变得非常棘手。(当一切顺利时,wordpress 在 the_content() 中加载到 Yii;它与 wordpress 主题融为一体。)

有任何想法吗?

4

3 回答 3

2

你有两个选择:

  1. 您必须try catch在可能出现异常的每个位置进行
  2. 处理错误,然后一旦出现异常,它会将您的所有应用程序重定向到所需的美容错误页面(使用 Wordpress 主题)

Yii 允许使用控制器动作来处理错误显示工作。为此,我们应该在应用程序配置中配置错误处理程序,如下所示:

return array(
    ......
    'components'=>array(
        'errorHandler'=>array(
            'errorAction'=>'site/error',
        ),
    ),
);

在上面,我们将 CErrorHandler::errorAction 属性配置为路由站点/错误,它指的是 SiteController 中的错误操作。如果需要,我们可能会使用不同的路线。

public function actionError()
{
    if($error=Yii::app()->errorHandler->error)
        $this->render('error', $error);
}

使用 WordPress 时,您可以自定义路线以及视图的主题

Yii 处理错误详情

于 2013-08-25T10:55:17.790 回答
1

您可能希望最终覆盖默认的 Yii 错误/异常处理程序以放入自定义处理程序。如果你看一下我关于集成 Yii/Wordpress的文章,这里有一个期望处理程序覆盖的示例。适应你的使用,你应该没问题。

调整站点/错误处理程序最终不会对您很好,因为这往往会引发 400 错误标头,即使您呈现不同的页面也无法停止。在集成 Yii 和 Wordpress 时遇到了困难,因为我首先尝试过。

让我们知道如果你开始了,希望有更好的示例代码将 Yii 融合为插件。

于 2013-08-25T23:30:12.960 回答
0

结束 Yii,进行适当的清理并且不退出请求。如http://www.yiiframework.com/doc/api/1.1/CApplication#end-detail所示,就是这样完成的。

Yii::app()->end(0, false);
于 2013-08-25T03:58:34.837 回答