bonjour, Je post ici car dans la partie Framework, la partie Zend ne semble pas présente. Je cherche à réaliser un site web, en m'appuyant sur Zend Framework 1.11.11, en utilisant le pattern MVC, d'un site de gestion de messages de navigation. Cependant, je me retrouve face à une impasse (je me doute que ça doit être tout simple, mais je vois pas comment me débloquer). En effet, j'ai créé des classes formulaires (une de recherche par date, une d'ajout) : que 2 pour le moment. Cela s'enrichira au fur et à mesure. Dans mon contrôleur, j'appelle mon formulaire, je l'affiche dans une page, mais je ne vois pas comment lancer l'action, ni surtout comment afficher le résultat en appelant la page de résultat. voici la partie du code de la méthode du modèle concerné : Code : [code] class Tavurnav extends Zend_Db_Table_Abstract { protected $_name= 'Avurnav'; protected $_primary = 'numerotation_avurnav'; public function findByDate($date_emission) //controles à venir { if (!isset($date_emission)) { die ("Il faut renseigner une date émission" ); } else { $select = $this->select() ->from ($this) -> where ('date_emission = ?', $date_emission); $date_em = $this->fetchAll ($select); return $date_em; } } // les autres methodes [/code] Le formulaire (chemin/forms/ChercheDate.php): Code : [code] class Application_Form_ChercherDate extends Zend_Form { public function init() { $dateemission = new Zend_Dojo_Form_Element_DateTextBox('date_emission'); $dateemission->setLabel('Date emission du message'); $submit = new Zend_Form_Element_Submit ('sub'); $submit->setLabel ('Lancer'); $this->addElements(array($dateemission,$submit)); } } [/code] La vue qui appelle le formulaire (/chemin/cherchedate.phtml) Code : [code]
<center> <?php echo $this->title;
echo "<br>";
echo $this->form;
?></center>(/code] La vue résultat (/chemin/views/script/infonaut/list-date.phtml) Code : [code] foreach ($this->avurnavs as $avnav) { echo "Message : " .$avnav->message . "
"; echo "Référence : " . $avnav->reference . "
"; echo "Zone concernée : " .$avnav->zone_concernee . "
"; echo "Date d'émission du message : " . $avnav->date_emission ."
"; echo "*********************************************************************
"; } [/code] Et surtout le contrôleur : Code : [code] class InfonautController extends Zend_Controller_Action { //.... // Fonction pour créer le formulaire public function getForm ($formul) { return $formul; } public function cherchedateAction () { $this->view->title = "Recherche par Date"; $formulaire = $this->getForm(new Application_Form_ChercherDate); $this->view->form = $formulaire; //C'est à partir de là que je coince un peu [/code] J'espère avoir été clair. Toute aide serait la bienvenue. Merci par avance
Merci, j'avais déjà résolu le problème il y a 3 semaines :)Mais merci quand même pour les réponses
Salut !
Tout depend de l'action que tu veux utiliser dans ton controller.
Si tu veux utiliser la même action de ton controller InfonautController::cherchedateAction
alors cela ne vaut pas la peine de spécifier la méthode setAction("url") dans ta classe de formulaire. le formulaire utilise l'action dans laquelle il est appelé par défaut.Donc tu pourras mettre ce code dans la même action du controller.
if($this->getRequest()->isPost()){
//traitement
}
<u>Proposition</u> :
pourquoi déclarer une méthode InfonautController::getForm ($formul) alors que tu peux instancier directement dans ton action le formulaire.