2010-01-25 3 views
0

J'ai récemment ajouté un module d'administration à ma demande. Cette application a une authentification séparée du site principal (les outils d'administration peuvent être utilisés plus tard dans différents sites pour différentes applications et les utilisateurs admin sont stockés dans une table séparée), ce qui est à l'origine des problèmes. En raison de la nature du singleton de Zend_Auth, je suis mon exemple Zend_Auth écraser à des moments critiques, et de faire sauter ma demande. Alors ...Comment déterminer les informations de routage lors du chargement des plug-ins du contrôleur frontal?

Je voudrais essayer de déterminer quel module est demandé dans le bootstrap et charger uniquement le plugin contrôleur avant approprié. Existe-t-il un moyen de déterminer quel module est demandé à ce point d'exécution ou y a-t-il une meilleure solution? Comment? Voici la méthode dans le bootstrap pour initialiser les plugins du contrôleur frontal.

_initFrontControllerPluginWithOptions fonction protégées() { $ this-> bootstrap (array ('frontController', 'ResourceLoader', 'session', ));

//get site specifics 
    $sessionInfo = $this->getOption("resources"); 

    if ($namespace = $sessionInfo['session']['name']) { 
     $data = array("cookieName" => $namespace); 
    } else { 
     throw new Exception("Authplugin can't find session namespace"); 
    } 

    $frontController = $this->getResource("frontController"); 

    //register plugins 
    $frontController->registerPlugin(new GS_Admin_Plugin_Auth_Admin($data)); 
    $frontController->registerPlugin(new GS_Model_Plugin_Auth_User($data)); 
} 

Répondre

0

Cela ne répond pas à votre question directement, mais d'une façon que je l'ai traité cette situation dans le passé est d'avoir plusieurs points d'entrée pour l'application, à savoir 2 ou plusieurs fichiers index.php. Dans chaque index.php différent, vous pouvez définir un drapeau avec une définition qui indique à partir de laquelle le programme entre. Basé sur cela, vous pouvez charger différents plugins de contrôleur.

Un exemple mis en place pour votre dossier public pourrait être:

/index.php 
/admin/index.php 

De ces deux vous toujours appeler la même classe Bootstrap.

+0

Merci - qui m'a d'aller dans la bonne direction. – RaleighwoodRacer

Questions connexes