IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Problème de controller appelant une autre vue (débutant)


Sujet :

MVC PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Points : 41
    Points
    41
    Par défaut Problème de controller appelant une autre vue (débutant)
    Bonjour,
    Débutant avec zend_framework, je me trouve devant un problème sans réussir à le ressoudre.

    Dans un même controleur, j'ai 2 action:
    - indexAction
    - listeAction

    J'ai donc 2 vues :
    - index.phtml
    - liste.phtml

    Je souhaite insérer dans mon template (j'utilise zend_layout) la vue Index en premier suivi de la vue liste.

    Voici mes 2 actions de mon contrôleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public function indexAction() {
    		$this->render('index');
    		$this->render('liste');
    	}
    	public function listeAction() {
    		//Ouvre l'obet 
    		$r = new Rec ();
    		//obtenons un objet Zend_Db_Select (capable d'appliquer des restrictions)
    		$select = $r->select();
     
    		$this->view->rec=$r->fetchAll($select);  		
    		$this->render();
    	}
    Et mes 2 vues:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h1>Index de la page</h1>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <h1>Liste</h1>
    <table>
    	<tr>
    		<th>id</th>
    		<th>nom</th>
    	</tr>
     <?php
    	foreach($this->rec as $re) {
    		echo "<tr>\n";
    		echo "<td>".$re->idrec."</td>\n";
    		echo "<td>".$re->titre."</td>\n";
    		echo "</tr>\n";
      }
     ?>
    </table>
    Comment avoir dans mon zend_layout les info de mon index suivi de cette de la liste? (Sachant que je souhaite que les info arrivent à la suite dans ma variable que j'ai définit par défaut: défaut : <?php echo $this->layout()->contenu ?>

    Aujourd'hui j'obtiens un warning:" Invalid argument supplied for foreach()"
    J'ai donc du louper une étape...

    Merci d'avance de votre aide !

  2. #2
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    il y a donc une erreur dans la boucle foreach

    essaye peut etre ca??? (je sais pas si ca fonctionne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach($this->rec as $re) {
    	echo "<tr>\n";
    	echo "<td>".$re."</td>\n";
    	echo "<td>".$re."</td>\n";
    	echo "</tr>\n";
      }
    Si $this->rec est bien un tableau, tu devrais avoir un résultat...
    Et pourtant... Elle tourne.
    http://www.djib.me

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    bonjour,
    le problème vien d'un autre endroit, car lorsque j'appel juste ce controleur celui-ci me retourne bien un tableau....

    Mon pb est donc je pense au niveau de mon contrôleur indexAction qui n'envoi pas le tableau que retourne mon listeAction...

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    euh ce que tu veut faire c'est executer l'action list dans ton template index ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->action('liste','controller') ?>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    c'est une solution, mais ayant 1 template pour l'ensemble du site, je ne souhaite pas ajouter cette vue directement dans mon template (étant donnée qu'elle va s'exécuter que dans certaine condition.

    ....

    Après pas mal de temps passé dans la doc, j'ai trouvé ce que je voulais.... et au final c'est tout simple !
    Il suffit de faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_forwart('liste')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'une fenêtre appellant une autre fenêtre
    Par samarqand dans le forum Débuter
    Réponses: 3
    Dernier message: 26/08/2014, 12h24
  2. Réponses: 3
    Dernier message: 14/09/2010, 10h14
  3. Réponses: 2
    Dernier message: 28/04/2009, 19h02
  4. appel d'une autre vue dans une vue d'un modèle different
    Par Fiyorden dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 09/07/2008, 16h22
  5. [JSTL] problème pour appeler une autre jsp
    Par forHelp dans le forum Taglibs
    Réponses: 3
    Dernier message: 09/11/2007, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo