2011-01-06 2 views
2

J'ai un plugin de contrôleur frontal personnalisé qui prend quelques options. A ce moment, je charger (plugin) dans le fichier application.ini comme ceci:Cadre Zend. comment passer des options au plugin de contrôleur frontal personnalisé?

resources.frontController.plugins.DynamicLayout = "My_Controller_Plugin_DynamicLayout" 

A ce moment je viens de fichier option.ini et ensuite utiliser Zend_Config pour l'importer. Existe-t-il un moyen de spécifier les options du plugin depuis le fichier primaire de ZEND, application.ini? Peut-être quelque chose comme ça ?:

resources.frontController.plugins.DynamicLayout.test = "test_value" 

Répondre

1

-je utiliser quelque chose comme ça pour passer à mes informations mises en page en utilisant bootstrap.

Cet exemple concerne une application qui s'exécute sur différents domaines, donc des dispositions différentes. (et a une version séparée pour MSIE). Chaque domaine en tant que application.ini séparé

<?php 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { 

    protected function _initAutoload() { 
     return new Zend_Application_Module_Autoloader(array(
      'namespace' => '', 
      'basePath' => APPLICATION_PATH 
     )); 
    } 

    // <snip> more _initMethods: Loggers, ACLs, ViewHelpers, etc. </snip> 

    /** 
    * Setup dynamic layout plugin 
    * 
    * @return Zend_Controller_Plugin_Broker 
    */ 
    protected function _initFrontControllerLayoutPlugin() { 
     // Ensure the front controller is initialized 
     $this->bootstrap('FrontController'); 
     $front = $this->getResource('FrontController'); 

     $this->bootstrap('layout'); 
     $layout = $this->getResource('layout'); 

     // Set our Front Controller Plugin 
     // !!!! right here I pass values to the layout 
     // !!!! example layoutName, but you could pass anything you want... 
     $plugin = new Plugin_DynamicLayout($layout, $this->getOption('layoutName')); 

     return $front->registerPlugin($plugin); 
    } 

} 

La mise en page Handler:

<?php 

class Plugin_DynamicLayout extends Zend_Controller_Plugin_Abstract { 

    private $layoutName; 

    public function __construct(Zend_Layout $layout, $layoutName) { 
     $this->layout = $layout; 
     $this->layoutName = $layoutName; 
    } 

     public function preDispatch(Zend_Controller_Request_Abstract $request) { 

     $layoutName = $this->layoutName; 

     if (false !== strpos($request->getHeader('User-Agent'), 'MSIE')) { 
      $layoutName = $layoutName . '-ie'; 
     } 

     $this->layout->setLayout($layoutName); 

    } 
} 

Le application.ini:

[production] 
layoutName = "Some_File_Name" 
+0

ne nous adorons tous simplement MSIE – Stann

Questions connexes