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_Db PHP Discussion :

Éviter échappement des erreurs


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Par défaut Éviter échappement des erreurs
    Bonjour à tous,

    Petite colle :
    J'utilise le Zend Framework et souhaite effectuer un debug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $row = $utilisateurTb->fetchRow($select); //ligne precedent mon debug, debut des ennuis...
    Zend_Debug::dump('mon beau debug');
    Simple a priori... Mais effectué suite à fetchRow, le debug ne s'affiche plus.
    En remontant un peu j'arrive dans Zend/Db/Table/Abstract.php sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Zend_Loader::loadClass($this->_rowClass);
    Elle me semble être la source de mes ennuis, à cause de ce @.
    Je ne souhaite pas modifier les fichiers du framework.
    Verriez-vous à tout hasard une feinte pour récupérer mon Debug ?
    Siouplait...

  2. #2
    mon_nom_est_personne
    Invité(e)
    Par défaut
    je suis pas expert en zf (le peu que j'qi tester il etait inutile pour moi), mais si tu ne le savais pas, le @ permet de ne pas afficher d'erreur mais il retour surtout un bool (0 en cas d'erreur, 1 si tout va bien) donc ca peu etre une piste a creuser. ou utilis un bloc try catch,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try{
    $row = $utilisateurTb->fetchRow($select);
    if(!$row)
    {
    throw new Exception('probleme');
    }
    } catch(Exception $e){
    Zend_Debug::dump('mon beau debug');
    }
    ca devrai marcher.
    Dernière modification par mon_nom_est_personne ; 05/09/2008 à 03h20.

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    L'arobase ne peut pas être la source du problème. Cela dit, tu peux regarder dans tes logs pour obtenir le message d'erreur

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Perso, je fais comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
    	try{
    		$row = $utilisateurTb->fetchRow($select);
    	}catch(Zend_Db_Exception $e){
    		$e->getMessage();
    		//Zend_Debug::dump('mon beau debug');
    	}

  5. #5
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Par défaut
    Merci pour vos réponses rapides !
    Effectivement, un bon vieux try / catch me permet d'y voir plus clair
    Je me remet au PHP, je n'avais pas ce réflexe avant avec ce langage.

    Dans la continuité de ce souci :
    J'ai activé dans mon point d'entrée (index.php) l'affichage de tout les messages (erreurs, stricts, ...).
    Dans mon controleur (IndexController.php), un debug dans ma fonction init() comme ci dessous passe directement en affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Debug::dump('mon beau debug');
    Par contre, dans une action, la meme ligne n'affiche rien, je doit passer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->debug = Zend_Debug::dump('mon beau debug');
    puis afficher sur mon template index.phtml la variable $debug...

    Un peu dommage, auriez vous une idée pour que ça passe en direct, comme lors du init() ?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    On peut voir ton controller ?

  7. #7
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Par défaut
    Voici mon controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    class LecarreController extends Zend_Controller_Action 
    { 
    	private $_lecarreNameSpace;
     
    	public function init()
        {
        	$this->_lecarreNameSpace = new Zend_Session_Namespace('lecarre');
     
        	//parametrage du layout de l'interface d'admin
    		$options = array(
    			    'layout'     => 'lecarre',
    			    'layoutPath' => '../../application/layouts',
    			    'contentKey' => 'CONTENT',
    			);
    		$this->_helper->layout()->setOptions($options);		
        }
     
    	public function indexAction()
        {
     
        	//pas d'utilisateur loggé, on appelle le formulaire de login
        	if(!isset($this->_lecarreNameSpace->utilisateur)){
        		$form = $this->_getLoginForm();
     
        		if ($this->_request->isPost()){
    	    		$formData = $this->_request->getPost();
    	    		if ($form->isValid($formData)) {
    					$utilisateurTb = new UtilisateurTable();
    		            $select = $utilisateurTb->select()->where('nom = ?', $form->getValue('nom'))
    											  ->where('motDePasse = ?', $form->getValue('motDePasse'))
    											  ->where('estActif = 1')
    											  ->limit(1, 0);
     
    		            try{
    				    $row = $utilisateurTb->fetchRow($select);
     
    			            if($row){
    							unset($form);
    							$this->_lecarreNameSpace->utilisateur = serialize(new Utilisateur($row->id, $row->nom));				
    						}
    						else{
    							throw new Exception('aucun utilisateur actif ne correspond aux paramètres de login entrés');
    						}
    					} catch(Exception $e){
    						$this->view->debug = Zend_Debug::dump($e->getMessage());
    					}	        
    	            }
    	    		else {
    	                $form->populate($formData);
    	            }	
    	    	}
        	}
     
        	if(isset($form))
        		$this->view->form = $form;
        }
    }
    J'ai du donc passer par cette ligne pour afficher mon debug dans une action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->view->debug = Zend_Debug::dump($e->getMessage());

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/07/2013, 10h03
  2. [Eclipse 3.0]Affichage des erreurs
    Par alfsalim dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/07/2004, 17h33
  3. Réponses: 8
    Dernier message: 18/05/2004, 10h03
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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