Zend_Auth теперь работает только частично

Хорошо,

Это совершенно странная ситуация.

Когда пользователь входит в систему, я сохраняю некоторые вещи, используя следующий код:

$auth->getStorage()->write($authAdapter->getResultRowObject(array(
                        'username',
                        'avatar',
                        'status',
                        'role',
                        'id',
                        'email'
                    )));

Затем я использую следующий код в моей начальной загрузке, чтобы получить доступ к переменным:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function preDispatch()
    {
        $this->frontController = Zend_Controller_Front::getInstance();
    }

    protected function _initBuildBase()
    {
        $this->bootstrap('layout');     
        $layout = $this->getResource('layout');
        $this->view = $layout->getView();
        // Set doctype
        $this->view->doctype("XHTML1_TRANSITIONAL");
        $this->view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
    }

    protected function _initLoader()
    {
        $adminLoader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Admin',
            'basePath' => APPLICATION_PATH));

        $autoLoader = Zend_Loader_Autoloader::getInstance();
        $autoLoader->registerNamespace('MyApp_');
        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath' => APPLICATION_PATH,
            'namespace' => '',
            'resourceTypes' => array(
                'model' => array(
                    'path' => 'models/',
                    'namespace' => 'Models_'
                ),
                'service' => array(
                    'path' => 'services/',
                    'namespace' => 'Services_'
                ),
                'form' => array(
                    'path' => 'forms/',
                    'namespace' => 'Forms_'
                ),
            ),
        ));
        return $autoLoader;
        return $adminLoader;
    }

    protected function _initControllerPlugins()
    {
        $this->frontController->registerPlugin(new MyApp_Controller_Plugin_ApplicationSettings);
        $this->frontController->registerPlugin(new MyApp_Controller_Plugin_LayoutLoader);
        $this->frontController->registerPlugin(new MyApp_Controller_Plugin_LanguageSelector);
        $this->frontController->registerPlugin(new MyApp_Controller_Plugin_Acl);
        $this->frontController->registerPlugin(new MyApp_Controller_Plugin_Uploadify);
    }

    protected function _initActionHelpers()
    {
         Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH .'/views/helpers');
    }

    protected function _initRoutes()
    {
        $router = $this->frontController->getRouter();
        $router->addRoute(
            'crud',
            new Zend_Controller_Router_Route('/:module/:controller/:action/:id', array('module' => 'admin', 'controller' => ':controller', 'action' => ':action', 'id' => ':id'))
        );
        $router->addRoute(
            'pagination',
            new Zend_Controller_Router_Route('/:module/:controller/index/:page', array('module' => 'admin', 'controller' => ':controller', 'action' => 'index', 'page' => ':page'))
        );
        $router->addRoute(
            'pageUrl',
            new Zend_Controller_Router_Route('/:page/:subpage', array('module' => 'default', 'controller' => 'index', 'action' => 'index', 'page' => ':page', 'subpage' => ':subpage'))
        );
    }

    protected function _initLogin()
    {
        $this->auth = Zend_Auth::getInstance();
        $this->view->user = $this->auth->getIdentity();
    }
}

Хорошо, а теперь странная часть:

Когда я использую

if($this->user->role == 'Administrator')
{

В моем layout.phtml это прекрасно работает. Но когда я использую тот же код в файле index.phtml, который загружается в соответствии с контроллером, он не работает?!

Более странная часть заключается в том, что раньше он работал идеально и использовал разные варианты в зависимости от роли пользователя.

Где я могу найти ошибки в моем коде? Действительно потерян на местах, чтобы проверить. Возможно, что-то где-то изменилось, но все остальное вроде бы работает нормально.

Любые советы или указания будут потрясающими!

1 ответ

Решение

Ресурс макета и вида использует Zend_Controller_Action_Helper_ViewRenderer(), Ресурс макета обращается к помощнику, чтобы получить представление (только для чтения). Но ресурс представления обращается к помощнику и перезаписывает объект представления помощника.
Итак, в вашем случае макет загрузился, вы установили переменные. После этого ресурс представления загружается, что перезаписывает представление в помощнике.
Вы всегда должны загружать представление перед макетом, чтобы они оба использовали один и тот же объект представления.

Другие вопросы по тегам