Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde,
je commence à explorer le Framework Zend et j'ai fait pas à pas le tutoriel de Rob Allen dans sa traduction française sur developpez.com
Les pages index, ajouter et modifier sont parfaitement fonctionnelles. Mais pour la suppression, j'ai droit à une superbe page qui fait état d'une exception :
Fatal error: Uncaught exception 'Zend_View_Exception' with message 'helper 'getParam' not found in path' in C:\www\zf-tutorial\library\Zend\View\Abstract.php:1003
Stack trace:
#0 C:\www\zf-tutorial\library\Zend\View\Abstract.php(496): Zend_View_Abstract->_loadClass('helper', 'getParam')
#1 C:\www\zf-tutorial\library\Zend\View\Abstract.php(298): Zend_View_Abstract->getHelper('getParam')
#2 [internal function]: Zend_View_Abstract->__call('getParam', Array)
#3 C:\www\zf-tutorial\application\controllers\IndexController.php(142): Zend_View->getParam('id')
#4 C:\www\zf-tutorial\library\Zend\Controller\Action.php(497): IndexController->supprimerAction()
#5 C:\www\zf-tutorial\library\Zend\Controller\Dispatcher\Standard.php(237): Zend_Controller_Action->dispatch('supprimerAction')
#6 C:\www\zf-tutorial\library\Zend\Controller\Front.php(909): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#7 C:\www\zf-tutorial\index.php(30): Zend_Controller_Front->dispatch( in C:\www\zf-tutorial\library\Zend\View\Abstract.php on line 1003
J'ai essayé de décortiquer tout ça mais sans grand succès : corrigez-moi si je me trompe, mais on dirait qu'une tentative de chargement de Zend_View_Helper_GetParam échoue : normal, elle n'existe pas. (Ma version du Z-F, 1.0 RC3)
Alors je me suis probablement trompé dans l'interprétation, mais finalement, je cherche à savoir comment "lire" ce genre de messages pour pointer correctement sur l'erreur qui est très probablement dans mon code. J'ai bien trouvé la ligne indiquée, mais ça ne m'avance pas des masses, c'est la ligne où est levée l'exception...
Merci d'avance pour toute piste m'indiquant la direction à suivre
Dernière modification par Cyrano (30-06-2007 23:21:30)
Hors ligne
Bonjour,
En fait l'erreur fait référence au Helper car tu essaies sûrement de faire appel à une méthode de Zend_View qui n'existe pas. Dans ce cas, ZF considère que tu veux utiliser un helper et t'envoie dans la méthode suivante :
public function __call($name, $args) { // is the helper already loaded? $helper = $this->getHelper($name); // call the helper method return call_user_func_array( array($helper, $name), $args ); }
Dans la Stack trace je vois :
#3 C:\www\zf-tutorial\application\controllers\IndexController.php(142): Zend_View->getParam('id')
Or, il me semble que la classe Zend_View n'a pas de méthode getParam. Par contre le request object référencé dans le controller a cette méthode que tu peux utiliser ainsi dans ton action IndexController->supprimerAction() :
$this->_request->getParam('id')
En espérant que j'ai été clair,
bien le bon soir,
fred
Dernière modification par fred wolf (27-06-2007 01:40:17)
Hors ligne
Merci beaucoup, je n'espérais pas une réponse aussi rapide.
Et ça fonctionne, enfin presque. L'exception a disparu et ma vue s'affiche correctement, pas avec les message attendu, mais j'avance et trouver le reste ne devrait pas poser de problème particulier.
Encore merci
Note : à cette heure-ci je n'ai pas le temps, mais je vais revenir rapidement pour signaler une autre petite erreur de ce tuto.
Hors ligne
Hello,
j'avais annoncé que reviendrais signaler une petite boulette : En fait, elle est assez mineure et devrait pouvoir être corrigée dans le fichier .htaccess de la racine.
Le problème :
Si vous avez une url du genre "http://localhost/zf-tutorial/", aucun problème, mais si vous avez l'idée de rajouter un nom de fichier avec une url comme ceci : "http://localhost/zf-tutorial/index.php", les liens vers les scripts, les feuilles de style et les images deviennent automatiquement fausses.
Une solution :
Il y a peut-être mieux à faire, mais pour ne pas m'attarder trop longtemps sur la question, j'ai résolu ça dans le controleur dans la méthode init() avec ceci :
$masque = "#(.*)index\.php$#i"; $base_url = preg_replace($masque, "$1", $this->_request->getBaseUrl()); $this->view->baseUrl = $base_url;
Autre point :
Dans le second tuto sur l'utilisation de Zend_Auth, il y a une coquille dans le code indiqué. En effet, la modification de l'index comporte ceci :
//... $config->db->config->asArray());
Alors que ce devrait être ceci :
//... $config->db->config->toArray());
La méthode asArray() lève une exception
Voilà, bon dev à tous.
Cyrano
Hors ligne