Yii从父控制器生成错误

Yii从父控制器生成错误,yii,error-handling,Yii,Error Handling,我刚开始使用Yii,来自Codeigniter(CI)。我正在尝试设置一种情况,应用程序将在用户访问该站点之前检查用户凭据。在CI中,我将创建一个父控制器,将我的检查放入其中,然后继承该父控制器。我一直在尝试对Yii做同样的事情,但没有运气 我首先创建了一个init()方法(由于某些原因,我无法将代码放入_construct()方法)。然后我进行检查,检查正常。我可以抛出一个新的异常,但这看起来很难看。我如何使用Yii内置的错误处理来完成我想做的事情?对于简单的登录规则,您应该从Yii-see实

我刚开始使用Yii,来自Codeigniter(CI)。我正在尝试设置一种情况,应用程序将在用户访问该站点之前检查用户凭据。在CI中,我将创建一个父控制器,将我的检查放入其中,然后继承该父控制器。我一直在尝试对Yii做同样的事情,但没有运气


我首先创建了一个init()方法(由于某些原因,我无法将代码放入_construct()方法)。然后我进行检查,检查正常。我可以抛出一个新的异常,但这看起来很难看。我如何使用Yii内置的错误处理来完成我想做的事情?

对于简单的登录规则,您应该从Yii-see实现“accessControl”过滤器


另一种方法是像以前一样抛出异常,编写自定义Http错误视图,将其放在文件夹/protected/views/system/(参见yii/framework/views目录中的示例)

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

根据检查结果,您希望显示什么样的响应?我想显示一个错误,说明他们无法使用此站点。好的,呈现错误视图有什么问题吗?我只是尝试从父控制器呈现一个视图,它做到了,但它也从子控制器渲染视图。最后我看到了“两个”网站,上面的一个说访问被拒绝,下面的一个有欢迎屏幕。我尝试了你的第二个建议,但我无法让它工作。它永远不会加载视图。我正在阅读你的第一个建议,并试图找出它是否适合我的情况。文档似乎讨论了单个(子)控制器级别的授权,而不是站点范围(父)级别的授权。我在公司的内部网上使用它,我必须基于pki验证用户,Yii的内置授权基于用户名和密码。我通过将错误发送到站点/错误视图,然后调用Yii::app()->end()来防止加载子控制器来解决此问题。啊。。。cmiiw您想在调用控制器操作之前检查授权吗?有点像cakephp中的beforeFilter?如果是这种情况,请特别查看第4章过滤器:DYii在控制器中也有一个“beforeAction”函数,该函数在实际操作执行之前被调用。重写此函数非常容易。如果访问被拒绝,您只需抛出一个新的CHttpException(404,“拒绝访问”),所有内容都将中止,并呈现错误视图。