Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] plusieurs formulaires dans un template par l'intermédiaire d'un crud

Posted by leaelle on 05/19/2009 11:00

Bonjour,

En fait je souhaite afficher sur une même page plusieurs formulaires. Le but étant d'avoir plusieurs instances d'un même formulaire (qui est très court) sur une même page et ensuite de les enregistrer toutes ensembles.

voici mon code :

Dans ma fonction create de mon controleur crud :

 $form2 = jForms::create('mod~enregistrer');
 $i = 0;
 $form = array();
 foreach(jDao::get("mod~comp")->findAll() as $record){
   $form[$i] = jForms::create('mod~comp);
   $i++;
 }
 $rep = $this->_getResponse(); 
 $tpl = new jTpl(); 
 $tpl->assign('i', 0); 
 $tpl->assign('id', null);
 $tpl->assign('form',$form); 
 $tpl->assign('form2',$form2); 
 $tpl->assign('listAction' , $this->_getAction('index')); 
 $liste = array();
 $liste[0] = 1;
 $liste[1] = 1;
 $tpl->assign('listecompet',$liste);
 $tpl->assign('domaine','1');
 $tpl->assign('submitAction', $this->_getAction('create'));
 $rep->body->assign($this->templateAssign, $tpl->fetch('edit_comp));
 return $rep;

et dans mon template :

 {foreach $listecompet as $compet}
 {form $form[$i], $submitAction}
   {$compet} : {ctrl_control 'id_niveau_theorie'} , {ctrl_control 'id_niveau_pratique'} 
 {/form} 
 {/foreach}

 {form $form2, $submitAction}
 <p>{formsubmit}</p>
 {/form}

Lorsque je lance l'application j'ai une erreur de ce type :

Fatal error: Call to a member function getBuilder() on a non-object in C:\...\temp\grh\compiled\templates\modules\mod\edit_comp_html_t.php on line 22

Si quelqu'un a une idée.... merci d'avance!

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #1 Posted by laurentj on 05/19/2009 11:18

Salut

  $form[$i] = jForms::create('mod~comp);

Si tu ne donnes pas d'identifiant pour chaque instance du formulaire, il s'agira en fait du même formulaire. Du coup tu va n'avoir les données que d'un seul des formulaires.

Dans ton template aussi, tu as un gros problème : tu es en fait en train de créer des formulaires sans bouton submit, sachant qu'en plus le bouton submit du formulaire $form2 ne va soumettre les données que de $form2. Il faut garder à l'esprit que {form} créer une balise <form> hein. D'un point de vue strictement HTML, ça va pas du tout fonctionner ton template.

D'après ce que je vois, c'est pas plusieurs formulaires que tu veux, mais un formulaire dans lequel on crée des champs dynamiquement. Dans ce cas, un seul formulaire jforms suffit. Il suffit ensuite de lui ajouter des controles dynamiquement. Voir la doc de reference de l'API de jFormsBase.

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #2 Posted by leaelle on 05/22/2009 15:36

Merci pour votre réponse !

J'ai donc essayé de faire un seul formulaire avec des controles que je rajoute dynamiquement. Or j'ai encore un problème... Je n'ai aucun message d'erreur qui apparait mais mon controle ne s'affiche pas....(comme si je ne l'avais pas ajouté ou alors pas comme il faut...)

voilà le code dans le controleur :

 protected function creer_form($id_domaine){
        $form = jForms::create('mod~comp_ind');
		
        //j'efface tous les controles 
        $form->removeControl('id_ind');
        $form->removeControl('id_competence');
        $form->removeControl('id_niveau_theorie');
        $form->removeControl('id_niveau_pratique');
 
        $competences = jDao::create('mod~comp')->findByDomaine($id_domaine);
		
        foreach($competences as $compet){
                $ctrl_compet = new jFormsControlMenulist('compet'.$compet->id);
                $ctrl_compet->datasource = new jFormsDaoDatasource('mod~comp','findAll','nom','id');
			
                $form->addControl($ctrl_compet);
        }
        return $form;
 }

Et j'ai mis dans le template :

 {form $form, $submitAction}
  {formcontrols $form}
   {ctrl_control}
  {/formcontrols}
 {/form}

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #3 Posted by leaelle on 05/22/2009 15:47

C'est bon ca marche ! J'avais juste oublié un ptit truc c'est pour ca....

Mais sinon tout fonctionne!! Enfin pour le moment!

Encore merci pour la réponse précédente !

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #4 Posted by leaelle on 05/25/2009 12:04

Par contre, je n'arrive pas à récupérer les valeurs de mon formulaire modifié....

Un simple

 $form = jForms::get('mod~compet_ind',1);
 $form->initFromRequest();

ne suffit-il pas?

Merci d'avance.....

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #5 Posted by leaelle on 05/25/2009 13:39

oui oui c'est ce que j'ai fait ! mais ca semble pas marcher.... bizarre...

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #6 Posted by leaelle on 05/25/2009 14:54

ca ne change rien... ca ne marche pas quand même....

A moins que ca vienne de la manière dont j'ai ajouté les controls, mais ce qui est bizarre c'est qu'à l'affichage du formulaire c'est bon, c'est juste que j'arrive pas à récupérer les valeurs

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #7 Posted by laurentj on 05/25/2009 15:17

Les controles, il faut les ajouter à chaque action que tu veux utiliser le formulaire. C'est pour ça qu'il existe les méthodes _createForm et _getForm dans le controlleur CRUD, qu'il faut redefinir dans un cas comme le tiens. Bref, elles devraient appeler ta methode creer_form

  [Opened] Re: plusieurs formulaires dans un template par l'intermédiaire d'un crud

Reply #8 Posted by leaelle on 05/25/2009 15:36

Ah ok nickel !

En fait je n'avais pas compris que le create et le get de jForms renvoient la même chose : un formulaire vide.

Ainsi, je peux aussi bien remplacer le create que le get par ma fonction perso : creer_form !

Merci !!

 
Page
  1. plusieurs formulaires dans un template par l'intermédiaire d'un crud