Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour les Z-F membres ,
Je débute dans le framework zend . Je lis en ce moment un "livre-tuto" sous format pdf , Apress - Pro Zend Framework Techniques (09-2009) (ATTiCA) qui permet d'assimiler les bases du framework .
Voici mon problème :
Dans ce livre on montre comment créer un formulaire et l'utiliser .
Ce formulaire permet de soumettre les bugs rencontrés dans ma phase développement .
Voici la liste des fichiers :
/application/controller/BugController.php :il contient toutes les actions lié au controller bug .
/application/forme/BugReporter.php: il contient le script de création du formulaire .
/application/views/script/bug/submit.phtml :il contient le code qui affiche le formulaire .
Voici le code source des fichiers cités ci-dessus :
/application/controller/BugReporter.php
class Form_BugReportForm extends Zend_Form { public function init() { // add element: author textbox $author = $this->createElement('text', 'author'); $author->setLabel('Enter your name:'); $author->setRequired(TRUE); $author->setAttrib('size', 30); $this->addElement($author); // add element: email textbox $email = $this->createElement('text', 'email'); $email->setLabel('Your email address:'); $email->setRequired(TRUE); $email->addValidator(new Zend_Validate_EmailAddress()); $email->addFilters(array( new Zend_Filter_StringTrim(), new Zend_Filter_StringToLower() )); $email->setAttrib('size', 40); $this->addElement($email); // add element: date textbox $date = $this->createElement('text', 'date'); $date->setLabel('Date the issue occurred (mm-dd-yyyy):'); $date->setRequired(TRUE); $date->addValidator(new Zend_Validate_Date('MM-DD-YYYY')); $date->setAttrib('size',20); $this->addElement($date); // add element: URL textbox $url = $this->createElement('text', 'url'); $url->setLabel('Issue URL:'); $url->setRequired(TRUE); $url->setAttrib('size',50); $this->addElement($url); // add element: description text area $description = $this->createElement('textarea', 'description'); $description->setLabel('Issue description:'); $description->setRequired(TRUE); $description->setAttrib('cols',50); $description->setAttrib('rows',4); $this->addElement($description); // add element: priority select box $priority = $this->createElement('select', 'priority'); $priority->setLabel('Issue priority:'); $priority->setRequired(TRUE); $priority->addMultiOptions(array( 'low' => 'Low', 'med' => 'Medium', 'high' => 'High' )); $this->addElement($priority); // add element: status select box $status = $this->createElement('select', 'status'); $status->setLabel('Current status:'); $status->setRequired(TRUE); $status->addMultiOption('new', 'New'); $status->addMultiOption('in_progress', 'In Progress'); $status->addMultiOption('resolved', 'Resolved'); $this->addElement($status); // add element: submit button $this->addElement('submit', 'submit', array('label' => 'Submit')); } }
---
/application/controller/BugController.php
<?php class BugController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } public function createAction() { // action body } public function submitAction() { $frmBugReport = new Form_BugReport(); $frmBugReport->setAction('/bug/submit'); $frmBugReport->setMethod('post'); $this->view->form = $frmBugReport; } }
---
/application/views/script/bug/submit.phtml
<h2>Submit a bug report</h2> <p>To submit a new bug report please fill out this form completely:</p> <?php echo $this->form->render(); // echo $this->form; does the same thing ?>
---
Voici mon Bootstrap.php
protected function _initAutoload() { // Add autoloader empty namespace $autoLoader = Zend_Loader_Autoloader::getInstance(); //Inclusion du dossier /application/form dans le autoloader (prefix Form_)afin d'appeler les class de script correspondant // sous la forme class Form_BugReporter $resourceLoader->addResourceType('form', 'forms/', 'Form_'); $resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => APPLICATION_PATH, 'namespace' => '', 'resourceTypes' => array( 'form' => array( 'path' => 'forms/', 'namespace' => 'Form_', ) ), )); // Return it so that it can be stored by the bootstrap return $autoLoader; }
J'ai compris le system del'autoloader et je vois déja toute sa puissance ! Mais lorsque je souhaite afficher mon formulaire ( monlocalsite/bug/submit) je reçois le message suivant :
Fatal error: Class 'Form_BugReport' not found in C:\wamp\www\zf_cms\application\controllers\BugController.php on line 25
Là je bloque comme une voiture dans un bouchon :p
Merci d'avance pour le coup de main
Hors ligne
Salut,
c'est probablement un problème de nommage de la classe de ton formulaire.
Dans ton fichier /application/controller/BugReporter.php ton formulaire se nomme Form_BugReportForm et tu tente d'instancier Form_BugReport dans ton controller
Hors ligne
ton dossier s'appelle bien:
/application/forme/BugReporter.php
Donc ton formulaire devrait s'appeler Forme_BugReporter extends Zend_Form
Vérifie bien le nom de ton dossier. Ici je vois une faute de frappe
Hors ligne
Merci pour vos réponses , j'ai trouvé la solution à mon problème. Je me suis tromper dans l'appel de la fonction .
Form_BugReport devient Form_BugReportForm . Et oui c'est comme ça que on perd du temps .
throrin19 chouette si web ! Cela serait cool de faire tuto "creation de blog" ...
Encore merci et à bientôt
Hors ligne
merci beaucoup, je préfaire éviter, il y a des parties de mon code pas très standardisées et propres.
Hors ligne
Pages: 1