Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-05-2009 12:00:43

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

[Résolu][Zend_App...] Utiliser les paramètres de votre application.ini

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

Code:

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

Code:

$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é smile ?

Dernière modification par Mr.MoOx (28-05-2009 15:17:20)

Hors ligne

 

#2 28-05-2009 14:55:33

jean
Membre
Date d'inscription: 25-08-2008
Messages: 107

Re: [Résolu][Zend_App...] Utiliser les paramètres de votre application.ini

Dans le bootstrap :

Code:

require_once 'config/Globals.php'; //classe Globals

Dans la classe Globals.php :

Code:

<?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 :

Code:

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

 

#3 28-05-2009 15:16:51

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu][Zend_App...] Utiliser les paramètres de votre application.ini

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...

Code:

<?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

Code:

resources.config.registry_key = MyRegistryKey
resources.config.google.youtube.login = ...
resources.config.google.youtube.pass = ...

Utilisation de la config

Code:

Zend_Registry::get('MyRegistryKey')->google ... ;

J'espère que ça servivra wink

Hors ligne

 

#4 02-12-2010 11:35:20

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: [Résolu][Zend_App...] Utiliser les paramètres de votre application.ini

Pour information, et même si j'arrive un peu tard smile

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages