OK,Zend_Auth ne fonctionne maintenant que partiellement
Ceci est complètement une situation étrange.
Lorsqu'un utilisateur se connecte, je stocke des choses en utilisant le code suivant:
$auth->getStorage()->write($authAdapter->getResultRowObject(array(
'username',
'avatar',
'status',
'role',
'id',
'email'
)));
Puis-je utiliser le code suivant dans mon bootstrap pour obtenir l'accès aux variables:
<?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();
}
}
Ok et maintenant la partie bizarre:
Quand j'utilise
if($this->user->role == 'Administrator')
{
Dans mon layout.phtml ça marche très bien. Mais quand j'utilise le même code dans un fichier index.phtml qui est chargé selon le contrôleur, ça ne marche pas ?!
La partie la plus étrange est qu'elle fonctionnait parfaitement et qu'elle utilisait différentes options selon le rôle de l'utilisateur.
Où puis-je rechercher des erreurs dans mon code? Vraiment perdu sur les lieux à vérifier. Probablement changé quelque chose quelque part, mais tout le reste semble bien fonctionner.
Tous les conseils ou les directions seraient géniaux!
Pouvez-vous s'il vous plaît fournir la fonction Bootstrap complète? Peut-être un problème de dépendance d'amorçage (comme la vue n'est pas encore amorcée?) – Fge
Ajouté à mon message original –
Vous n'êtes pas sûr de cela, mais essayez un $ this-> bootstrap ('view') avant d'amorcer la mise en page. – Fge