Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-03-2011 07:37:07

sparklegion
Nouveau membre
Date d'inscription: 04-03-2011
Messages: 8

Plusieur Action dans une seul vue

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



 

Code:

 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

Code:

<?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

 

#2 25-03-2011 08:38:59

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Plusieur Action dans une seul vue

bonjour,
ceci devrais faire le job :

Code:

$this->view->action($action,$controller,...);

DOC : http://framework.zend.com/manual/1.11/f … tion.model


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#3 25-03-2011 09:12:10

sparklegion
Nouveau membre
Date d'inscription: 04-03-2011
Messages: 8

Re: Plusieur Action dans une seul vue

J'ai fait :

Code:

<?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 !!! sad
help sad

Hors ligne

 

#4 25-03-2011 09:25:23

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Plusieur Action dans une seul vue

Pour utiliser un script d'une autre action dans une action, j'ai utilisé ce code :

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

 

#5 25-03-2011 09:32:54

sparklegion
Nouveau membre
Date d'inscription: 04-03-2011
Messages: 8

Re: Plusieur Action dans une seul vue

et comment je devrais écrire tous ce bazar dans le view  ?? c'est correcte ce que j'avais écrie ?

Hors ligne

 

#6 25-03-2011 10:17:12

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Plusieur Action dans une seul vue

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

Code:

$this->view->stat2 = $stat2->fetchAll(); 
par 
$this->view->stat = $stat2->fetchAll();

Dernière modification par Ithier (25-03-2011 10:18:02)

Hors ligne

 

#7 25-03-2011 17:40:16

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Plusieur Action dans une seul vue

Je ne comprend pas vraiment ce que tu veux faire,
si c'est pour avoir deux action affichant le même rendu :

Code:

//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 :

Code:

//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


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages