Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Toujours débutant sur ZF, pour mon application je veux juste faire un formulaire héritant de Zend_Form, que je place dans le dossier "forms" dans le dossier "application". Problème, dans mon contrôleur ou naturellement je veux utiliser ce formulaire, une erreur me sort ça :
Fatal error: Class 'Default_Form_Login' not found in /var/www/monappli/application/controllers/LoginController.php on line 76
et à cette ligne 76 je n'ai que ça :
. . $request = $this->getRequest(); $form = new Default_Form_Login(); . .
Alors on comprends direct que c'est une histoire de PATH pour accéder à ce dossier "forms", mais après avoir trainer sur le web pour trouver une solution ou un bon tuto explicant le moyen de bien configurer ses chemins, je n'ai rien trouvé qui marche, avec juste un "espoir" sur ce forum sur ce topic : http://www.z-f.fr/forum/viewtopic.php?id=3291
Déjà que je découvre les Formulaire sous Zend, si en plus des "soucis" de ce style viennent me bloquer une matinée, je suis mal...
Merci d'avance pour votre aide, lien vers un tutoriel ou autre.
--itecman
Dernière modification par itecman (15-07-2009 10:08:41)
Hors ligne
Est ce que ton controller est dans un module séparé ? peux tu nous présenter ton architecture, peut etre que le probleme vient de là. Et quel nom as tu donné a ton fichier de formulaire ?
Hors ligne
Merci pour ta réponse,
Donc voici mon architecture :
Pour le nom de mon fichier formulaire c'est : LoginForm.php (avec la méthode LoginForm()), sinon après différent tests et tutos sur internet j'ai renommé en Login.php avec une mathode Default_Form_Login().
Je n'utilise pas de module pour le moment, et j'ai juste un LoginController avec la mathode suivante qui coince à cause du path invalide :
public function signAction() { $request = $this->getRequest(); $form = new Default_Form_Login(); if ($this->getRequest()->isPost()) { if ($form->isValid($request->getPost())) { $model = new Default_Form_Login($form->getValues()); $model->save(); return $this->_helper->redirector('index'); } } var_dump($form); $this->view->form = $form; }
En fait je suis le "Quick Start" de la documentation de Zend Framework en ligne.
Merci d'avance
Hors ligne
Un formulaire qui porte le nom :
class Form_News_Add extends Zend_Form
S'intancie comme ça :
$form = new Form_News_Add();
Pourquoi parles-tu de méthode avec ton formulaire de login?
Hors ligne
En effet, je me suis mal exprimé, je voulais plutôt dire "action" au lieu de méthode. Ceci dis mon problème semble plus général car il ne voit tout simplement pas le dossier "forms" donc les classes qui s'y trouvent. En lisant de la doc, je suis en train de voir Zend_Loader_Autoloader, et j'ai aussi compris que le système de chargement de classe avait bien changé sous la 1.8.x...
J'espère résoudre ce problème rapidement, c'est la.
Hors ligne
Bonjour
Désolé de pas avoir mis à jour avant car la solution a été trouvée le jour même et en effet le rajout de la méthode suivante dans le bootstrap a suffit :
protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => dirname(__FILE__), )); return $autoloader; }
Maintenant dans n'importe quel endroit je peut déclarer mes objets formulaires. Par contre je ne comprends pas forcément pourquoi l'absence de namespace fait qu'il trouve mon répertoire forms et mes classes. Si quelqu'un pouvait éclair ce point svp...
Bonne journée
--itecman
Hors ligne
Pages: 1