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

  [Opened] fetch d'un tpl contenant un formulaire = formfull inconnue

Posted by SaMot91 on 02/11/2009 12:48

Bonjour,

Encore un petite question, enfin un problème :)

J'ai un controleurDaoCrud, qui affiche un formulaire, jusque là tout va bien. Lors d'une modification d'un élément, j'affiche donc un formulaire avec les champs remplis, normal, et je souhaite rajouter un autre formulaire.

Je fais donc comme suit :

 function editupdate()
	{
    	$code = ...
        $form = jForms::get($this->form, $code);
        if( $form === null || $code === null)
		{
            ...
        }
		
		$rep = $this->getResponse('htmlfragment');
        $rep->tplname=$this->editTemplate;
        
        $rep->tpl->assign('id', $code);
        $rep->tpl->assign('form',$form);
        $rep->tpl->assign('submitAction',$this->_getAction('saveupdate'));
        
        /* Création du second formulaire */
	        $form2 = jForms::create('bob~bla');
			
	       	$tpl = new jTpl();
	        $tpl->assign('form',$form2);
	        $tpl->assign('submitAction', $this->_getAction('savecreate'));
		/* Fin création second formulaire */
 $rep->tpl->assign('OTHERFORM',$tpl->fetch('module~montpl'));
        
        $this->_editUpdate($form, $rep, $rep->tpl);
        
        return $rep;
    }

Quand je fais celà, cela me dit que la fonction formfull, qui se trouve dans le tpl "module~montpl" est inconnue...

module~montpl.tpl:

 {formfull $form, $submitAction}

Simple pourtant :)

Message d'erreur :

 [exception 302 Dans le template C:/.../montpl.tpl la fonction formfull est inconnue C:\...\lib\jelix\tpl\jTplCompiler.class.php 	521

Donc voilà, j'ai peut être fait quelque chose de travers ...

je tiens à signaler que j'ai copier le plugin tpl formfull pour les réponses htmlfragment et que ca fonctionne sans le second formulaire.

Pour être clair, j'ai deux controleurdaocrud, et je souhaiterais, dans le "editupdate" du premier, appelé la fonction "precreate" d'un autre afin de récuperer la réponse et l'afficher dans mon tpl. Pour le moment, jai fait ca à la main en recuperant le formulaire, je ne sais pas s'il est possible d'appeler un controleur dans un autre controleur.

Merci d'avance pour votre aide,

  [Opened] Re: fetch d'un tpl contenant un formulaire = formfull inconnue

Reply #1 Posted by bballizlife on 02/11/2009 15:07

Je ne comprends pas bien, tu modifies le controllercrud de Jelix ? Si c'est le cas, ce n'est pas du tout recommandé.

Sinon, pourquoi déclarer une réponse "htmlfragment", tu es dans une utilise de xmlhttprequest ?

Malgré tout, tu peux simplement préciser le type de template lors du fetch(), cf la doc sur l'API.

 $rep->tpl->assign('OTHERFORM',$tpl->fetch('module~montpl', 'html'));

N'importe comment c'est dans la doc

  [Opened] Re: fetch d'un tpl contenant un formulaire = formfull inconnue

Reply #2 Posted by laurentj on 02/11/2009 23:05

Salut,

Bon, déja, le controleur CRUD n'est pas fait pour de l'ajax. Je trouve donc que c'est un peu "accrobatique" de faire ce que tu fais. Pour l'ajax, ce serait mieux de faire ton propre formulaire, je pense que ça serait plus propre. Pour ce qui d'appeler un controleur via un autre controleur directement, c'est casser les principes du MVC. Enfin, je sais pas ce que tu entends par "appeler".

Sinon, pour ton problème précisement. Comme tu as surement créé un nouveau repertoire de plugin htmlfragment, essaye de voir si il le reconnait une fois que tu as vider le contenu du temp. Sinon tu peux aussi essayer d'indiquer à fetch que tu veux le type "html".

Dans la version finale 1.1, le type de la reponse htmlfragment sera 'html'.

 
Page
  1. fetch d'un tpl contenant un formulaire = formfull inconnue