IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

la fonction log() de FirePhp ne marche pas dans les modules


Sujet :

Zend Framework PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 62
    Points : 39
    Points
    39
    Par défaut la fonction log() de FirePhp ne marche pas dans les modules
    Bonjour,
    j'essaie d'utiliser FirePhp dans un projet Zend comme un système de logging.
    ce qui marche bien sur le bootstrap, et voici le code associé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $loggerf = new Zend_Log();
     $writerf = new Zend_Log_Writer_Firebug();
     $loggerf->addWriter($writerf);
     Zend_Registry::set('loggerF',$loggerf);
     $loggerf->log( 'Test ......', Zend_Log::DEBUG);
    j'ai bien dans le console de firebug la phrase 'Test ......'.

    mais quand j'essaie de faire la même chose dans un contrôleur d'un module donnée, je reçoit rien dans le console et voici le code :
    Zend_Registry::get('loggerF')->log("Test ...... !",Zend_Log::INFO);
    j'ai passé toute la journée à chercher la solution mais j'arrive toujours pas, aidez moi svp

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Bonsoir,

    Cela ne va pas t'aider, mais personnellement je n'utiliserais pas Zend_Registry : depuis ton contrôleur tu as accès au bootstrap, et donc tu as accès aux ressources de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getInvokeArg('bootstrap')->getResource('log');
    Ensuite, difficile de te répondre si on ne sait pas à quoi ressemble ton bootstrap... es-tu sûr que la méthode en question se lance quand tu affiches une action de ce module ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    merci pour votre réponse, mais je trouve que le problème n'est pas lié au zend_registry, et voici la déclaration complète dans Bootstrap.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected function _initActionHelper(){
    		$writer 	= new 
    		
                    $loggerf = new Zend_Log();
                    $writerf = new Zend_Log_Writer_Firebug();
                    $loggerf->addWriter($writerf);
                    Zend_Registry::set('loggerF',$loggerf);
    //                $loggerf->log( 'Test ......', Zend_Log::DEBUG);
    
    		Zend_Controller_Action_HelperBroker::addPrefix ( "Application_Controller_Action_Helper" );
    		Zend_Controller_Action_HelperBroker::addPrefix ( "Project_Controller_Action_Helper" );
    	}
    comme j'ai bien dit avant si je teste le log depuis le bootstrap directement, ça marche très bien.

    mais ça ne marche pas lorsque j'essaie d'appelé la méthode log dans une action quelconque, situé dans un contrôleur d'un module donné.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    pour revenir sur la question de @Nighty , si dans l'action du contrôleur dans laquelle tu effectues ton teste, la méthode _initActionHelper() n'est jamais appelée il est évident que Zend_Registry ne peut s’initialiser donc restera vide.En effet la portée de Zend_Registry n'est valable que pendant la requête en cours.

    Pour vérifier que la méthode _initActionHelper() est appelée dans le controlleur:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //dans l'action du contrôleur où tu  souhaites effectuer le teste
    if(method_exists ( $this->getInvokeArg('bootstrap') , '_initActionHelper'))
             echo "la méthode est appelée";
           else 
           echo "méthode n'est pas appelée"  ;
    Si la méthode n'est jamais appelée tu peux soit mettre ta méthode dans le fichier public/index.php soit la dupliquer dans tes 2 boostraps(dans ce dernier cas un héritage ou une interface peut éliminer la duplication)

Discussions similaires

  1. Fonction Screen.active form ne marche pas et plus
    Par clickandgo dans le forum VBA Access
    Réponses: 10
    Dernier message: 14/05/2012, 19h46
  2. [XL-2003] VBA Find ne marche pas dans les formules
    Par Ghorin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2011, 17h56
  3. fonction de recherche ne marche pas dans le footer
    Par niamo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/05/2010, 14h18
  4. La sous-fonction ne marche pas dans le programme principal
    Par lematlabeur dans le forum MATLAB
    Réponses: 11
    Dernier message: 15/11/2007, 21h04
  5. la fonction is_file et is_dir ne marche pas, HELP !!!
    Par chaser_T dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo