Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour à tous,
e désire proposer à des utilisateurs d'entrer leurs informations.
Je voudrais que ces informations soient découpées en plusieurs parties, chacune d'entre-elles dans un Onglet.
Exemple :
onglet 1 : un formulaire contenant nom,prénom,date de naissance.
onglet 2 : un formulaire contenant salaire,situation familiale.
un bouton suivant pour passé du premier onglet au deuxième onglet si le premier formulaire est validé.
-je voudrais que l'onglet 2 soit désactivé tant que le premier formulaire n'est pas validé et aussi le bouton suivant doit être désactiver.
j'ai commencé sur un petit exemple pour débuter dont voici le code :
mes formulaires :
class Albums_Form_Produit extends Zend_Form { public function init() { $this->setName('album'); $id = new Zend_Form_Element_Hidden('id'); $id->addFilter('Int'); $artiste = new Zend_Form_Element_Text('artiste'); $artiste->setLabel('Artiste') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $titre = new Zend_Form_Element_Text('titre'); $titre->setLabel('Titre') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $datecreat = new ZendX_JQuery_Form_Element_DatePicker( 'date', array('label' => 'Date') ); $datecreat->setJQueryParam('dateFormat', 'dd-mm-yy'); $this->setAction('/Produit/add') ->setMethod('post'); $this->addElements(array($id, $artiste, $titre,$datecreat)); } } class Albums_Form_Artiste extends Zend_Form { public function init() { $this->setName('artist'); $artist = new Zend_Form_Element_Text('artist'); $artist->setLabel('Artiste') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $this->setAction('/Produit/add') ->setMethod('post'); $this->addElements(array($artist)); } }
mon controlleur :
class Albums_ProduitController extends Zend_Controller_Action { public function addAction() { //on instancie notre formulaire et on l'envoie a la vue pour l'afficher $form = new Albums_Form_Produit(); $form1 = new Albums_Form_Date(); $this->view->form = $form; $this->view->form1= $form1; //une fois le formulaire renvoyé, on verifie la validité des data et on l'affiche if ($this->getRequest()->isPost() ) { $formData = $this->getRequest()->getPost(); $form->populate($formData); $form1->populate($formData); if ($form->isValid($formData)) { $data['titre']=$form->getValue('titre'); $data['artiste']=$form->getValue('artiste'); $data['date_creation']=$form->getValue('date'); echo $data['titre']; echo $data['artiste']; echo $data['date_creation']; } else { $form->populate($formData); } if($form1->isValid($formData)){ $data['artist']=$form1->getValue('artist'); echo $data['artist']; }else { $form1->populate($formData); } } } }
la vue add.phtml
<div style="align:right"> <form name="envoyer" action="<?php echo $this->url(array('controller'=>'produit','action'=>'add'))?>" method="POST"> <input type="submit" name="send" value="suivant"/> <?php //on affiche le formulaire deja instancié dans le controlleur echo $this->tabContainer() ->addPane("tab1", "Album", $this->form) ->addPane("tab1", "Artiste", $this->form1) ->tabContainer("tab1", array()); ?> </form> </div>
ici j'ai eu un problème c'est que je récupère seulement les données envoyées par le formulaire contenue dans la première onglet .
je suis très besoin de votre aide.
merci.
Hors ligne
tu peut utiliser les fonction hide et show
au depart tu met ton deuxieme onglet a hide et lorsque tu appuye sur ton bouton tu le met a show
Hors ligne
tu peut aussi le faire avec du css grace a visibility: hidden et visibility: visible ou encore grace a display:none display: block a toi de voir
Hors ligne
salut,
j'ai essayé cette proposition avec les onglet de zend dojo mais il n a pas marché,je vais ressayé avec cette exemple que j'ai posé.
pour le bouton,lors du clique je dois récupérer le contenue du formulaire que je viens de le remplir.si vous avez un idée comment faire cela.
merci.
Hors ligne