我目前正在编写一个应用程序作为wordpress的插件,因此我需要一些非传统的解决方案..
目前我的问题是,当Yii收到错误时,它会在错误处理程序中抛出错误,然后退出PHP执行。是不是应该有沙箱Yii的方法让它只退出它自己的执行并让外部代码继续?
在我的情况下,大多数页面都是空白的,并且没有任何wordpress主题被加载..所以设计好的错误页面变得非常hacky。 (当一切正常时,wordpress在the_content()中加载Yii;并且它与wordpress主题融合。)
有什么想法吗?
答案 0 :(得分:2)
您有两种选择:
try catch
每个可能出现异常的位置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时,您可以自定义路线以及视图的主题
答案 1 :(得分:1)
您可能希望最终覆盖默认的Yii错误/异常处理程序以放入自定义处理程序。如果您查看我关于integrating Yii/Wordpress的文章,可以使用一个预期处理程序覆盖的示例。适应你的使用,你应该没事。
调整站点/错误处理程序不会最终适合您,因为它往往会抛出400错误标题,即使您呈现不同的页面也无法停止。在整合Yii和Wordpress的过程中遇到困难,正如我先尝试过的那样。
如果你了解它,请告诉我们,希望有更好的示例代码将Yii作为插件融合。
答案 2 :(得分:0)
结束Yii,正确清理并且不退出请求。如http://www.yiiframework.com/doc/api/1.1/CApplication#end-detail所示,它就是这样完成的。
Yii::app()->end(0, false);