Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous,
J'ai une petite question toute simple.
Je me demande quel technique vous utilisez pour récupérer les paramètres de votre application.ini hors des Xxx_Application_Resource_....
Vu qu'un ini est chargé pour l'instant j'ai quel truc dedans (genre google map api key, youtube dev key etc) que j'ai mi ainsi
resources.frontController.google.youtube.login = ... resources.frontController.google.youtube.devkey = ... resources.frontController.google.maps.apiKey = ...
Du coup je peux les récupèrer dans mes controllers ainsi
$googleParams = $this->_getParam('google');
Mais là j'en aurais besoin dans un plugin au routeStartup()... Avez vous déjà utiliser des paramètres ainsi ?
Ou savez vous comment récupérer le application.ini Zend_Configifié ?
Dernière modification par Mr.MoOx (28-05-2009 15:17:20)
Hors ligne
Dans le bootstrap :
require_once 'config/Globals.php'; //classe Globals
Dans la classe Globals.php :
<?php require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Db'); Zend_Loader::loadClass('Zend_Config_Ini'); class Globals { private static $_db = null; private static $_config = null; public function __construct() { throw new Zend_Exception('Vous ne pouvez pas instancier Globals.php! Cette classe est static.'); } //... autres fonctions ..... public static function getConfig() { // à l'extérieur de la classe Globals : Globals::getConfig() // à l'interieur de la classe Globals : self::getConfig() // si la configuration existe, elle est retournée if (self::$_config != null) { return self::$_config; } self::$_config = new Zend_Config_Ini( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.ini', 'main', true); // Conserve l'emplacement et le nom du fichier de config dans la registry Zend_Registry::set('config',dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.ini'); // ajouter ici une exception return self::$_config; // retour de l'instance de configuration } // public static function getConfig() ... autres fonctions ..... } // class Globals
Ensuite, depuis n'importe où j'appelle mes paramètres du config.ini :
Globals::getConfig()->css->theme ; Globals::getConfig()->googlemap->apikey ;
etc.
Cordialement,
Jean
Dernière modification par Mr.MoOx (28-05-2009 15:06:35)
Hors ligne
Merci mais tant qu'à utiliser un fichier de config avec Zend_Application, je souhaitais mettre ça dedans vu que j'ai certain paramètres qui dépende de l'environnement...
Du coup j'ai fais une petite classe qui fonctionne avec Zend_Application, ça vaut ce que ça vaut...
<?php /** * Rewix extension for Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://www.rewix.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to contact@rewix.com so we can send you a copy immediately. * * @category Rx * @package Rx_Application * @subpackage Resource * @copyright Copyright (c) 2007 Rewix (http://www.rewix.com) * @license http://www.rewix.com/license/new-bsd New BSD License */ /** * * @author Maxime Thirouin */ class Rx_Application_Resource_Config extends Zend_Application_Resource_ResourceAbstract { const DEFAULT_REGISTRY_KEY = 'App_Config'; /** * * @var Zend_Config */ protected $_config; /** * * (non-PHPdoc) * @see librairies/Zend/Application/Resource/Zend_Application_Resource_Resource#init() */ public function init() { $options = $this->getOptions(); $key = (isset($options['registry_key']) && !is_numeric($options['registry_key'])) ? $options['registry_key'] : self::DEFAULT_REGISTRY_KEY; unset($options['registry_key']); $this->_config = new Zend_Config($options); Zend_Registry::set($key, $this->_config); } }
Config
resources.config.registry_key = MyRegistryKey resources.config.google.youtube.login = ... resources.config.google.youtube.pass = ...
Utilisation de la config
Zend_Registry::get('MyRegistryKey')->google ... ;
J'espère que ça servivra
Hors ligne
Pour information, et même si j'arrive un peu tard
Si on a par exemple dans le application.ini :
application.name = 'Mon appli'
Dans le routeStartup d'un plugin on fait comme ça :
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
//---- récupérer toutes les options
$aOptions = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOptions();
//---- récupérer une ressources particulière
$aOptionApplication = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOption('application');
[...]
}
Hors ligne
Pages: 1