Görünümünde Geçerli kullanıcıyı nasıl ayarlanır?

3 Cevap php

Ben Zend Framework kullanıyorum.

Ben geçerli kullanıcı (oturum açmış ise) her zaman görünüme kullanılabilir olmasını istiyorsanız. Benim bootstrap.php dosyasında var şu anda:

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

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

    $view->identity = Zend_Auth::getInstance()->getIdentity();
}

Ve benim index.php dosyası gibi görünüyor:

require_once 'Zend/Application.php';  

// Create application, bootstrap, and run
$application = new Zend_Application(APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini');

$application->bootstrap();

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

$application->run();

Ben Bootstrap bu gibi bir şey olmak istiyorum:

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;
}

Ben bu deneyin olsa, ben bir hata alıyorum:

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

Veritabanı bu noktada çerçeve tarafından kurulum olmamıştır gibi Öyle görünüyor.

Orada Zend Framework geçerli kullanıcı nesnesi ayarlamak için basit bir yolu olmalı ama ben onu anlamaya olamaz.

3 Cevap

Ben Bootstrap için iki yöntem ekleyerek sona erdi:

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);
}

Sonra ben sadece yapın:

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

_initViewHelpers in ()

Eğer _initViewHelpers () çağırdığınızda Sadece Bootstrap içinde initialize Görünüm önce DB başlatmak veya DB adaptörü ayarlayın. Ben de bir Controller Plugin kullanmak istiyorum.

Ben sadece tek, tasarım desen en aşağılık kullanıcı koymak ve bunu istediğimiz zaman hiç hiç ve nerede diyoruz.

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

VEYA

$User=bl_User::getInstance();bl_User::getInstance()
$User->user_id;
$User->user_name;