Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-12-2007 14:02:21

Fadeninev
Nouveau membre
Date d'inscription: 07-12-2007
Messages: 9

[Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Bonjour !

Je suis en train de travailler sur une vue, et j'aurais besoin d'un helper parce que j'ai du code html récurrent dans mes pages et qu'il serait beaucoup mieux pour la lisibilité que ce code soit renvoyé par un helper.
J'ai suivi la documentation Zend. J'ai donc :
- crée un fichier 'NomDeMonHelper.php"
- dans lequel j'ai défini une classe "Helper_NomDeMonHelper"
- dans laquelle j'ai défini une méthode publique "nomDeMonHelper"

Voilà ce fichier :

Code:

<?php

class Helper_GetWidget {
    
    public function getWidget() {
        return 'coucou';
    }
}
?>

Dans mon IndexController, fonction init(), j'ai écrit :

Code:

$view = new Zend_View();
$view->addHelperPath(ROOT_URL.'application/views/helpers', 'Helper');

Enfin, dans ma vue, j'ai écris :

Code:

<?php echo $this->getWidget(); ?>

A l'exécution, j'ai l'erreur suivante :

Uncaught exception 'Zend_View_Exception' with message 'helper 'GetWidget' not found in path' in C:\wamp\www\...\Zend\View\Abstract.php:1004 Stack trace: #0 C:\wamp\www\...\Zend\View\Abstract.php(497)

Le chemin que j'ai donné est bien valide, je l'ai affiché pour voir si la constante ROOT_URL était bien interprétée.
J'ai également appelé la méthode getHelperPaths pour vérification, tout est ok...

D'après vous d'où peut venir le problème ? Si ça se trouve il saute aux yeux, mais je commence à loucher sur mon code !!

Merci d'avance smile

Dernière modification par Fadeninev (07-12-2007 14:04:17)

Hors ligne

 

#2 07-12-2007 14:36:01

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Ton fichier est bien nommé : GetWidget.php

Hors ligne

 

#3 07-12-2007 14:41:27

Fadeninev
Nouveau membre
Date d'inscription: 07-12-2007
Messages: 9

Re: [Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Isilgawen a écrit:

Ton fichier est bien nommé : GetWidget.php

Oui, j'ai tout vérifié... Les noms, les chemins... Je ne comprends pas...

J'utilise la dernière release du ZF. Je vais essayer avec la version 1.0.2 pour voir, on ne sait jamais...

Dernière modification par Fadeninev (07-12-2007 14:41:39)

Hors ligne

 

#4 10-12-2007 13:40:14

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

Re: [Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Code:

$view = new Zend_View();
$view->addHelperPath(ROOT_URL.'application/views/helpers', 'Helper');

Si tu fais, ça, d'apprès moi ça ne marche pas si tu utilise le render automatique car une vue est déjà instancié automatiquement. Essaye ça dans ton init() :

Code:

$this->view->addHelperPath(ROOT_URL.'application/views/helpers', 'Helper');

Hors ligne

 

#5 10-12-2007 13:49:05

Fadeninev
Nouveau membre
Date d'inscription: 07-12-2007
Messages: 9

Re: [Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Merci Mr Moox. J'ai résolu le problème ce matin.

La documentation officielle semble erronée, visiblement on ne peut pas redéfinir comme on veut le préfixe de la classe. J'avais passé en paramètre le préfixe 'Helper' et ça n'avait pas l'air de plaire au ZF.

J'ai retenté ma chance sans préciser de préfixe, et carrément en supprimant l'instruction qui donnait le chemin vers le helper (si on respecte la structure de répertoire application/views/helpers/monHelper.php normalement pas besoin de préciser le chemin avec la méthode addHelperPath() ).

Du coup dans mon controller j'ai supprimé l'instruction suivante :

Code:

//Paramètre 1 : Chemin vers les helpers
//Paramètre 2 : Préfixe personnalisé
$view->addHelperPath( $this->_request->getBaseUrl().'application/views/helpers', 'Helper');

Dans mon helper j'ai changé le nom de la classe en remplaçant le préfixe 'Helper' par le préfixe "officiel" 'Zend_View_Helper' :

Code:

class Zend_View_Helper_GetWidget 
{
...
}

Et enfin dans ma vue je peux appeler mon helper tout simplement :

Code:

<?php echo $this->getWidget(); ?>

wink

Dernière modification par Fadeninev (10-12-2007 16:00:34)

Hors ligne

 

#6 07-03-2008 10:13:05

yesilay
Nouveau membre
Date d'inscription: 07-03-2008
Messages: 1

Re: [Zend_View_Helper] Problème avec un helper personnalisé pour ma vue

Bonjour,
j'ai un problème similaire avec ZF 1.5 b1 sous linux. Car sous windows tout marche, mais quand je transfert sur le serveur, il n'arrive pas trouver mon helper.  Sachant que c'est un serveur dédié, et les configurations du serveur et de mon poste de travail sont presque les memes.
dans mon index.php principale, j'ai la configuration suivante

$view = new Zend_View ( );
$view->addHelperPath("../application/helpers/view/","Helper_");
Zend_Controller_Action_HelperBroker::getStaticHelper ( 'viewRenderer' )->setView ( $view );
Zend_Debug::dump($view);

et un Helper que je veux utiliser dans mes views.

class Helper_LoginUrl {
    public function loginUrl() {
        $auth = Zend_Auth::getInstance ();
        return ($auth->getStorage ()->read ()) ? "/auth/logout" : "/auth/login";
    }
}


Et sur mon serveur linux j'ai l'erreur suivant :
object(Zend_View)#56 (12) {
  ["_path:private"] => array(3) {
    ["script"] => array(0) {
    }
    ["helper"] => array(2) {
      [0] => array(2) {
        ["prefix"] => string(7) "Helper_"
        ["dir"] => string(28) "../application/helpers/view/"
      }
      [1] => array(2) {
        ["prefix"] => string(17) "Zend_View_Helper_"
        ["dir"] => string(49) "/srv/Zend/ZendFramework/library/Zend/View/Helper/"
      }
    }
    ["filter"] => array(1) {
      [0] => array(2) {
        ["prefix"] => string(17) "Zend_View_Filter_"
        ["dir"] => string(49) "/srv/Zend/ZendFramework/library/Zend/View/Filter/"
      }
    }
  }
  ["_file:private"] => NULL
  ["_helper:private"] => array(0) {
  }
  ["_helperLoaded:private"] => array(0) {
  }
  ["_helperLoadedDir:private"] => array(0) {
  }
  ["_filter:private"] => array(0) {
  }
  ["_filterClass:private"] => array(0) {
  }
  ["_filterLoaded:private"] => array(0) {
  }
  ["_filterLoadedDir:private"] => array(0) {
  }
  ["_escape:private"] => string(16) "htmlspecialchars"
  ["_encoding:private"] => string(10) "ISO-8859-1"
  ["_strictVars:private"] => bool(false)
}


Fatal error: Uncaught exception 'Zend_View_Exception' with message 'helper 'Login' not found in path' in /srv/Zend/ZendFramework/library/Zend/View/Abstract.php:1000 Stack trace: #0 /srv/Zend/ZendFramework/library/Zend/View/Abstract.php(493): Zend_View_Abstract->_loadClass('helper', 'Login') #1 /srv/Zend/ZendFramework/library/Zend/View/Abstract.php(294): Zend_View_Abstract->getHelper('login') #2 [internal function]: Zend_View_Abstract->__call('login', Array) #3 /srv/www/vhosts/dev.art-in-progress.com/application/modules/default/views/scripts/header.phtml(7): Zend_View->login() #4 /srv/Zend/ZendFramework/library/Zend/View.php(46): include('/srv/www/vhosts...') #5 /srv/Zend/ZendFramework/library/Zend/View/Abstract.php(765): Zend_View->_run('../application/...') #6 /srv/Zend/ZendFramework/library/Zend/View/Helper/Partial.php(103): Zend_View_Abstract->render('header.phtml') #7 /srv/Zend/ZendFramework/library/Zend/View/Abstract.php(300): Zend_View_Helper_Partial->partial('header.phtml') #8 [internal function]: Zend_View_Abstrac in /srv/Zend/ZendFramework/library/Zend/View/Abstract.php on line 1000

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