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

  [Opened] Ajout formulaire dans template list

Posted by djanke on 02/15/2008 10:45

Est il possible d'ajouter un formulaire jforms {form $form, $listAction}ur effectuer une recherche par exmple dans le template list.

Si je code

 {form $form, $listAction}

J'obtiens l'erreur

 Fatal error: Call to a member function getBuilder() on a non-object in D:\www_dpi\e107\temp\jproject\compiled\templates\modules\chat\list_html_t.php on line 22
 

  [Opened] Re: Ajout formulaire dans template list

Reply #1 Posted by lipki on 02/15/2008 10:57

Et tu bien sur d'avoir initialiser ton formulaire dans le contrôleur qui affiche ce template list.

		
 function index() {
 
 	// création de la réponse
 	$rep = $this->getResponse('html');
 	$rep->title = 'Rechercher un ou plusieurs enregistrement';
 	
 	// formulaire de recherche
 	$form = jForms::create('recherche');
 	$rep->body->assign('form', $form);
	
 	$rep->bodyTpl = 'list';
 	return $rep;
 
 }

  [Opened] Re: Ajout formulaire dans template list

Reply #2 Posted by laurentj on 02/15/2008 11:36

Est il possible d'ajouter un formulaire jforms {form $form, $listAction}ur effectuer une recherche par exmple dans le template list.

Je ne comprend pas ce que tu fais, et ce que tu veux faire.

  [Opened] Re: Ajout formulaire dans template list

Reply #3 Posted by lipki on 02/15/2008 12:10

Il ne faut pas utiliser la fonction que j'ai donner, c'était juste un exemple.

Je suppose que tu suit le tutoriel pour créer un crud simple, dans ce cas il faut que tu surcharge la méthode index() de la classe jControllerDaoCrud, dans ton contrôleur.

Ce topic http://jelix.org/forums/read.php?5,2164 peut te renseigner.

 function index() {
    // formulaire de recherche
    $form = jForms::create('recherche');
    $rep->body->assign('form', $form);
  
    return parent::index();
 }

voila a mon avis comment tu doit surcharger index()

  [Opened] Re: Ajout formulaire dans template list

Reply #4 Posted by djanke on 02/15/2008 15:07

Au final

Dans mon controleur j'ai

 function index() {
		//tri dynamique
		$champ = $this->param('champ');
		$sens = $this->param('sens');	
		if ($champ != '')  $this->propertiesForRecordsOrder [$champ] = $sens;
		// création de la réponse
		//$rep = $this->getResponse('html');		
		// formulaire de recherche
		//$form = jForms::create('search');
   	//$rep->body->assign('formsearch', $form);		
		return parent::index();
	}

	
	function _index($resp, $tpl) {
		$resp->title = 'Rechercher un ou plusieurs enregistrement';
		//réassignation aux tpl des valeurs du tri
		$champ = $this->param('champ');
		$sens = $this->param('sens');
		$tpl->assign('champ',$champ);
		$tpl->assign('sens',$sens);
		// formulaire de recherche
		$form = jForms::create('search');
		$tpl->assign('formsearch', $form);
		
		//champs recherchchés		
		$name = $this->param('name');
		$manager_person_id = $this->param('manager_person_id');
		$project_status_type_id = $this->param('project_status_type_id');
		//assignation au template des champs recherchés
		$tpl->assign('name',$name);		
		
		$tpl->assign('manager_person_id',$manager_person_id);				
		$tpl->assign('project_status_type_id',$project_status_type_id);
						
		//ajout des conditions
		if ($name != '' or $manager_person_id != '' or $project_status_type_id != '')  
		{
			$conditions = jDao::createConditions();			
			if ($name != '') {$conditions->addCondition ('name', 'LIKE', "%$name%");$form->setData("name",$name);}
		  if ($manager_person_id != '') {$conditions->addCondition ('manager_person_id', '=', $manager_person_id);$form->setData("manager_person_id",$manager_person_id);}
			if ($project_status_type_id != '') {$conditions->addCondition ('project_status_type_id', '=', $project_status_type_id);$form->setData("project_status_type_id",$project_status_type_id);}			
			$dao = jDao::get($this->dao, $this->dbProfil);
			$offset = $this->intParam($this->offsetParameterName,0,true);
			$results = $dao->findBy($conditions,$offset);
			$tpl->assign('recordCount',$results->rowCount());	
					
			$tpl->assign('list',$results);
			
		}

Dans le template

 <p>Liste des fiches</p> 

 {form $formsearch,'forms:index'}
 <fieldset>
   <legend>Critères de recherche</legend>  
     <p>{ctrl_label 'name'} 
       {ctrl_control 'name'}</p>
       
       <p>{ctrl_label 'manager_person_id'} 
       {ctrl_control 'manager_person_id'}</p>
       <p>{ctrl_label 'project_status_type_id'} 
       {ctrl_control 'project_status_type_id'}</p>      
   
 </fieldset>
 <p>{formsubmit}</p>
 {/form}

 {if $list->rowCount()}
  <div>Pages : {pagelinks $listAction, array('champ'=>$champ,'sens'=>$sens,'name'=>$name,'manager_person_id'=>$manager_person_id,'project_status_type_id'=>$project_status_type_id),  $recordCount, $page, $listPageSize, $offsetParameterName }

Quand j'essaye de créer le form dans la fonction index() et non dans la méthode j'ai l'erreur déja citée à la génération je l'assigne donc danlamétode __index

 Fatal error: Call to a member function rowCount() on a non-object in D:\www_dpi\e107\temp\jproject\compiled\templates\modules\chat\list_html_t.php on line 14

  [Opened] Re: Ajout formulaire dans template list

Reply #5 Posted by lipki on 02/15/2008 16:02

J'avoue j'ai du mal a te suivre ....

Pourquoi a tu ajouter le code pour trier les enregistrement ?

  [Opened] Re: Ajout formulaire dans template list

Reply #6 Posted by lipki on 02/15/2008 17:26

Ok, mais tu devrais faire les choses les une après les autres...

enfin..

 Fatal error: Call to a member function rowCount() on a non-object in
 D:\www_dpi\e107\temp\jproject\compiled\templates
 \modules\chat\list_html_t.php on line 14

Apparemment tu assign list

 $tpl->assign('list',$results);

Dans une condition, si ta condition ce trouve être fausse, list ne sera pas défini.

  [Opened] Re: Ajout formulaire dans template list

Reply #7 Posted by laurentj on 02/15/2008 17:26

Call to a member function rowCount() on a non-object in D:\www_dpi\e107\temp\jproject\compiled\templates\modules\chat\list_html_t.php on line 14

Ça me semble normal, vu que la variable $list n'existe que dans certaines conditions

   if ($name != '' or $manager_person_id != '' or $project_status_type_id != '')

Bref, change ton test dans le template.

  [Opened] Re: Ajout formulaire dans template list

Reply #8 Posted by djanke on 02/15/2008 17:36

La variable list est normalement assignée dans la classe jControllerDaoCrud mais si je créée le template dans la fonction index() ce n'est plus le cas et j'avais cette erreur. Mon assignation dans le test est une réassigantion si j'effectue une recherche je réassigne list. Le controleur fonctionne bien de cette façon j'ai laissé en commentaire dans index() la cération du form qui provoquait l'erreur

 
Page
  1. Re: Ajout formulaire dans template list