- 1
[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
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
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
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
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
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
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
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
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
- 1