我正在使用Zend_Auth来识别我的应用程序中的用户。 这将使用userobject创建一个会话。
我的问题是如何让每个Controller和action都可以使用这个对象,所以每次我需要来自这个对象的数据时,我都不必将它从会话中拉出来?
我猜这应该在bootstrap.php或index.php中完成,但我真的不知道如何将它用于每个控制器..所以任何代码示例都会受到赞赏!
谢谢!
答案 0 :(得分:2)
Bootstrap
和index.php
可能为时尚早。由于路由尚未完成,因此没有控制器可以注入$user
对象。
我想到了几种可能性:
使用BaseController
创建一个BaseController
表单,其他所有控制器都会扩展。在基本控制器的init()
方法中,您可以进行作业
$this->_user = Zend_Auth::hasIdentity() ? Zend_Auth::getIdentity() : null;
然后$this->_user
将在您的控制器操作处随处可用。
但很多人嘲笑BaseController的想法。最好使用动作助手,如下所述。
使用动作助手
创建action helper,其direct()
方法返回以与上述相同的方式创建的$user
对象。然后在您的控制器中,您可以$this->_helper->user
访问它。
确切地说,您为助手类命名的位置以及您放置它的位置取决于您使用Zend_Controller_Action_HelperBroker
方法在addPath()
中设置的路径和名称空间。
使用控制器插件
列出完整性。但实际上,IMO最好是上面的动作助手。