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 GlobalsEnsuite, 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