Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour a tous , je me demandais est ce que c'est possible de récuperer la valeur d'un parametre dans un zend form ? ,j'ai une fonction jquery qui me lance mon formulaire comme pop up et j'ai besoin d'un parametre pour que le formulaire fonctionne bien , je voudrais dans mon zend form ajouter une condition sauf que j'ai besoin d'un parametre ,j'ai fais comme ceci mais ca marche pas
$id = $this->_getParam('restaurantId'); $booking = new Zend_Form_Element_Select('booking'); $booking->setLabel('Booking') ->setRequired(false); $bookingTable = new Booking(); $select = $bookingTable->select()->setIntegrityCheck(false) ->from('booking') ->join('restaurant','restaurant.restaurantId=booking.Restaurant_restaurantId') ->where('restaurant.restaurantId ='.$id); foreach ($bookingTable->fetchAll($select) as $c) { $booking->addMultiOption($c->BookingId, $c->bookingDate); }
Dernière modification par croux89 (23-05-2012 19:11:57)
Hors ligne
salut,
Tu récupères la valeur dans ton controlleur, et tu la passes en paramètre à ton formulaire.
Franck.
Hors ligne
j'ai pas compris peux tu me donner un exemple stp
Hors ligne
$param = $this->getRequest()->getParam('monParam'); $form = new Mon_Form($param);
Hors ligne
je vois pas comment je pourrai utiliser sa , moi je voudrais récupérer la valeur dans mon form est non pas dans mon controller , comment j'ai expliquer au début je voudrais recuperer la valeur dans mon zend form afin de pouvoir mettre la condition dans mon zend form element select
le $id dans la clause where comment je peux le recuperer dans le zend form avant de generer mon zend form element select
$booking = new Zend_Form_Element_Select('booking'); $booking->setLabel('Booking') ->setRequired(false); $bookingTable = new Booking(); $select = $bookingTable->select()->setIntegrityCheck(false) ->from('booking') ->join('restaurant','restaurant.restaurantId=booking.Restaurant_restaurantId') ->where('restaurant.restaurantId ='.$id); foreach ($bookingTable->fetchAll($select) as $c) { $booking->addMultiOption($c->BookingId, $c->bookingDate); }
Hors ligne
Dans ton contrôleur tu récupère ton paramètre, tu instancie ton formulaire avec le paramètre récupéré. Dans ta classe de formulaire tu utilise le paramètre pour récupérer les éléments de ton select, je ne vois pas ou tu bloque c'est de la POO :-/
Hors ligne
c'est la partie de mettre le paramètre dans le formulaire sa me bloque je sais pas comment ?
comment donner la paramètre a mon zend form ???? tu dis mettre le paramètre lors de l'instanciation du form mais dans le zend form comment donner a ma condition $select ce paramètre c'est la ou je bloque , est ce que je dois donner le paramètre dans la fonction init ?????
class BookingPromotionForm extends App_Backoffice_Form{ public function init($c) { $this->setName('Booking Promotion'); $booking = new Zend_Form_Element_Select('booking'); $booking->setLabel('Booking') ->setRequired(false); $bookingTable = new Booking(); $select = $bookingTable->select()->setIntegrityCheck(false) ->from('booking') ->join('promotion','promotion.Booking_BookingId=booking.BookingId') ->where('booking.Restaurant_restaurantId ='.$c); foreach ($bookingTable->fetchAll($select) as $c) { $booking->addMultiOption($c->BookingId, $c->bookingDate); }
Hors ligne
Tu surcharge le constructeur de Zend_Form quelques choses dans le genre :
[lang=php] class Form_BookingPromotion extends Zend_Form { private $_restaurantId; public function __construct(array $params = array()) { $this->_restaurantId = $params['restaurantId']; parent::__construct(); } public function init() { // création des elements ici $booking = new Zend_Form_Element_Select('booking'); $booking->setMultiOptions($this->getBookingList($this->_restaurantId)); } public function getBookingList($restaurantId) { $list = array(); $bookingTable = new Booking(); $select = $bookingTable->select()->setIntegrityCheck(false) ->from('booking') ->join('promotion','promotion.Booking_BookingId=booking.BookingId') ->where('booking.Restaurant_restaurantId ='.$restaurantId); foreach ($bookingTable->fetchAll($select) as $c) { $list[$c->BookingId] = $c->bookingDate; } return $list; } }
Hors ligne
merci pour ta réponse et merci pour ton aide , j'ai essayé ton exemple mais malheureusement sa ne marche pas j'ai une erreur qui n'est pas précise et donc je sais pas vraiment c'est quoi la solution en tout cas je vais continuer a testé et voir si j'arrive a résoudre le problème , merci encore pour tes réponses
Hors ligne