Php 如何在视图中设置当前用户?

Php 如何在视图中设置当前用户?,php,zend-framework,zend-db,zend-view,Php,Zend Framework,Zend Db,Zend View,我正在使用Zend框架 我希望当前用户(如果已登录)始终对视图可用。在我的Bootstrap.php文件中,我当前有: function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); // <snip> $view-> set

我正在使用Zend框架

我希望当前用户(如果已登录)始终对视图可用。在我的Bootstrap.php文件中,我当前有:

function _initViewHelpers()
{
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();

            // <snip> $view-> set some stuff

    $view->identity = Zend_Auth::getInstance()->getIdentity();
}
我希望引导是这样的:

function _initViewHelpers()
{
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();

    $tblUser = new Model_DbTable_User();
    $user = $tblUser->getUser();
    Zend_Registry::set('user', $user);

    $view->user= $user;
}
但是,如果我尝试这样做,我会得到一个错误:

Fatal error:  Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for Model_DbTable_User' in /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Db/Table/Abstract.php:754
Stack trace:
#0 /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Db/Table/Abstract.php(739): Zend_Db_Table_Abstract-&gt;_setupDatabaseAdapter()
#1 /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Db/Table/Abstract.php(268): Zend_Db_Table_Abstract-&gt;_setup()
#2 /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Db/Table.php(77): Zend_Db_Table_Abstract-&gt;__construct(Array)
#3 /var/www/application/Bootstrap.php(25): Zend_Db_Table-&gt;__construct()
#4 /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Application/Bootstrap/BootstrapAbstract.php(662): Bootstrap-&gt;_initViewHelpers()
#5 /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Application/Bootstrap/BootstrapAbstract.php(615): Zend_Application_Bootstrap_BootstrapAbstract-&gt;_executeResource('viewhelpers')
#6 /usr/local/php/ZendFramework-1.9.5- in /usr/local/php/ZendFramework-1.9.5-minimal/library/Zend/Db/Table/Abstract.php on line 754
因此,目前看来该框架尚未设置数据库


在Zend Framework中,必须有一种简单的方法来设置当前用户对象,但我无法找到它。

我只是将用户放在最恶劣的设计模式中,即singleton中,并在任何时候任何地方调用它

bl_User::getInstance()->user_id;
bl_User::getInstance()->user_name;


只需在引导中初始化视图之前初始化DB,或者在调用_initViewHelpers()时设置DB适配器。不过我还是用了一种方法。

我最后在引导中添加了两种方法:

function _initDatabase()
{
    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 
        APPLICATION_ENV);
    $db = Zend_Db::factory($config->resources->db->adapter, 
        $config->resources->db->params);
    Zend_Registry::set('db', $db);
}

function _initUser()
{
    $tblUser = new Model_DbTable_User(array('db' => Zend_Registry::get('db')));
    $user = $tblUser->getUser();
    Zend_Registry::set('user', $user);
}
那么我就这样做:

$view->user = Zend_Registry::get('user');

在_initViewHelpers()

中,调用使用“vile”的设计模式似乎不合逻辑。如果你讨厌,就不要用它it@AntonioCS幽默感不会伤害你;-)
function _initDatabase()
{
    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 
        APPLICATION_ENV);
    $db = Zend_Db::factory($config->resources->db->adapter, 
        $config->resources->db->params);
    Zend_Registry::set('db', $db);
}

function _initUser()
{
    $tblUser = new Model_DbTable_User(array('db' => Zend_Registry::get('db')));
    $user = $tblUser->getUser();
    Zend_Registry::set('user', $user);
}
$view->user = Zend_Registry::get('user');