Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, je débute avec zend, et j'ai déjà un petit souci, j'ai fais deux Action pour récupérer deux sorte de données de ma base
public function indexAction() { $id_s = '2'; $stat = new Application_Model_DbTable_Stat(); $this->view->stat = $stat->obtenirStat($id_s); } public function SearchAction() { $stat2 = new Application_Model_DbTable_Stat(); $this->view->stat2 = $stat2->fetchAll(); }
et après j'affiche le résultat avec un foreach sur mon view
<?php foreach ($this->stat as $stat) : ?> <tr> <td><?php echo $this->escape($stat['id_stat']);?></td> <td><?php echo $this->escape($stat['id_etu']);?></td> <td><?php echo $this->escape($stat['id_ann']);?></td> <td><?php echo $this->escape($stat['log_stat']);?></td> </tr> <?php endforeach; ?>
là je récupère que l'IndexAction, comment je doit faire pour insérer sur le même view mon SearchAction ??
Merci d'avance
Hors ligne
bonjour,
ceci devrais faire le job :
$this->view->action($action,$controller,...);
Hors ligne
J'ai fait :
<?php $action = $this->view->action('Search', 'index'); foreach ($action->stat2 as $stat2); ?> <tr> <td><?php echo $action->escape($stat->id_stat);?></td> <td><?php echo $action->escape($stat->id_etu);?></td> </tr>
mais cela ne marche pas !!!
help
Hors ligne
Pour utiliser un script d'une autre action dans une action, j'ai utilisé ce code :
$this->_helper->viewRenderer->setScriptAction('index');
Ce serait à ajouter dans ta fonction SearchAction
Dernière modification par Ithier (25-03-2011 09:26:01)
Hors ligne
et comment je devrais écrire tous ce bazar dans le view ?? c'est correcte ce que j'avais écrie ?
Hors ligne
Désolé mais je n'ai pas compris ce que tu voulais.
Le code que je t'ai fourni te permet d'utiliser le même script de vue (index.phtml) avec 2 actions différentes. Par contre c'est à toi de t'organiser pour que ce que tu passes à ta vue soit identique dans les 2 actions.
Dans SearchAction il faut évidemment remplacer
$this->view->stat2 = $stat2->fetchAll(); par $this->view->stat = $stat2->fetchAll();
Dernière modification par Ithier (25-03-2011 10:18:02)
Hors ligne
Je ne comprend pas vraiment ce que tu veux faire,
si c'est pour avoir deux action affichant le même rendu :
//dans le controlleur public function indexAction(){ $this->view->stat = $stat->obtenirStat($id_s) } public function searchAction(){ $this->view->stat = $stat->obtenirStat($id_s); // pour faire un rendu avec index.phtml $this->render('index); } // script.phtml <?php foreach($this->stat as $stat); ?> <tr> <td><?= $this->escape($stat['id_stat']);?></td> ..... <?phpendforeach;?>
Et pour que ta boucle fonctionne dans les deux cas il faudra qu'elles aient le même nom dans tes deux actions($this->view->stat).
Si c'est pour effectuer le rendu deux deux action simultanément dans une seul action, j'utilise cette méthode :
//dans le controlleur public function indexAction(){ $this->view->stat = $stat->obtenirStat($id_s) $this->view->statSearch = $this->view->action('search'); } public function searchAction(){ $this->view->stat = $stat->obtenirStatAutre($id_s); } // script index.phtml <?php foreach($this->stat as $stat); ?> <tr> <td><?= $this->escape($stat['id_stat']);?></td> ..... <?php endforeach;?> // affichera le rendu de l'action search <?=$this->statSearch;?> // script search.phtml <?php foreach($this->statSearch as $statSearch); ?> <tr> <td><?= $this->escape($statSearch['id_stat']);?></td> ..... <?phpendforeach;?>
J'espère que cela t'aidera.
Dede
Hors ligne