Yii从父控制器生成错误

问题描述:

我刚刚开始使用来自Codeigniter(CI)的Yii。我试图设置一种情况,即在应用程序甚至可以访问网站之前检查用户凭据。在CI中,我会创建一个父控制器,将我的支票放在那里,然后继承该父控制器。我一直在试图对Yii做同样的事情,但没有运气。Yii从父控制器生成错误

我第一次创建了一个init()方法(出于某种原因,我不能把代码放在__construct()方法中)。然后我执行我的支票,这工作正常。我可以抛出一个新的CHttpException,但看起来很丑。我如何使用Yii的内置错误处理来完成我想要做的事情?

+0

根据检查结果你想显示什么样的回答? – 2011-03-10 19:54:22

+0

我想显示一个错误,说他们不能使用这个网站 – Steve 2011-03-10 19:56:08

+0

那么,渲染错误视图有什么问题? – 2011-03-10 19:57:35

我通过发送错误到站点/错误视图,然后调用Yii :: app() - > end()来加载子控制器来解决这个问题。

对于简单的登录规则,您应该实施Yii的'accessControl'过滤器,参见Yii documentation on authorizations

另一种方式是抛出异常像你已经做到了,自定义HTTP写入错误的观点,将其放置在yerfolder /保护/视图/系统/(见例子警予/框架/ views目录)

+0

我尝试了你的第二个建议,但我无法使其工作。它永远不会加载视图。我正在阅读您的第一个建议,并试图弄清楚它是否适合我的情况。看起来,文档谈论的是关于授权的个人(儿童)控制者级别,而不是在全站(父级)级别。我在我公司的内部网上使用它,我必须根据pki验证用户,Yii的内置授权基于用户名,密码。 – Steve 2011-03-11 12:04:29

+0

我通过将错误发送到站点/错误视图,然后调用Yii :: app() - > end()来加载子控制器来解决此问题。 – Steve 2011-03-11 14:24:28

+0

ahh ... cmiiw甚至在控制器操作被调用之前,你想检查授权吗?有点像cakephp中的beforeFilter?如果是这种情况,请查看http://www.yiiframework.com/doc/guide/1.1/en/basics.controller,具体是第4章,过滤器:D – ZaQ 2011-03-14 06:17:19