Zend访问所有控制器中的用户数据

时间:2011-06-28 12:21:12

标签: zend-framework session action helper

搜索并搜索了一些指导,但似乎无法正常工作。我不会访问任何索引控制器中的用户数据来保存重复代码。我创建了一个ACTION HELPER,它调用Session并返回用户数据。以下是我实现它的方式。调用帮助程序有效,但我无法在任何控制器中获取数据。

的application.ini

autoloaderNamespaces [] =“ZC”

bootstrap.php中

protected function _initActionHelpers()
{
Zend_controller_Action_HelperBroker::addHelper(new ZC_Action_Helpers_User());   
}

user.php的

<?php

    Class ZC_Action_Helpers_User extends Zend_Controller_Action_Helper_Abstract
    {       
    public function direct()
        {
            $storage = new Zend_Auth_Storage_Session();
            $data = $storage->read();
            $this->_user = $data;        
        }    
    }

IndexController.php

<?php

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {

        $this->_helper->user;

    }

我对代码没有任何问题但是例如说如何从帮助程序中获取USERNAME或USERID ???

感谢您花时间看这个。

Ĵ

2 个答案:

答案 0 :(得分:2)

首先,您的插件函数必须返回用户信息,而不是将其设置为类变量:

Class ZC_Action_Helpers_User extends Zend_Controller_Action_Helper_Abstract
{       
public function direct()
    {
        $storage = new Zend_Auth_Storage_Session();
        $data = $storage->read();
        return $data;        
    }    
}

然后你可以在你需要的任何控制器中使用插件:

$user  = $this->_helper->User->Direct()

您可能希望重命名其中一些函数和类。

答案 1 :(得分:0)

尝试在bootstrap路径中声明帮助程序...

Zend_Controller_Action_HelperBroker::addPath(
        APPLICATION_PATH .'/controllers/helpers');

接下来使用谷歌这个简单的问题.... howto use helper in ZF