Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-07-2008 12:04:05

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

[][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Bonjour à tous,

Je débute avec ZF et j'ai encore quelques petits problemes avec le fonctionnement du Zend_Layout.
J'utilise Zend_Layout avec la methode statique startMVC(), qui est lancée dans mon bootstrap.
Jusqu'a present je n'utilisais qu'un seul controlleur et toutes mes vues se trouvées dans le meme dossier.
Le rendu de mes pages s'effectuait tres bien en procedent ainsi :

Dans mon layout : app/views/layouts/layout.phtml
(nb : header.phtml et footer.phtml se trouvent dans le meme dossier que mon layout)

Code:

<!-- HEADER -->
<?php echo $this->partial('header.phtml') ?>
<!-- MENU -->
<?php echo $this->layout()->menu; ?>
<!--SIDEBAR-->
<?php echo $this->layout()->sidebar; ?>
<!--CONTENU-->
<?php echo $this->layout()->content; ?>
<!-- FOOTER -->
<?php echo $this->partial('footer.phtml') ?>

Dans mon controller : app/controllers/IndexController.php

Code:

public function indexAction(){
        $this->view->title  = "index";
        $this->render('index');
        $this->render('menu','menu');
        $this->render('sidebar','sidebar');
}

Mes vues index.phtml, menu.phtml et sidebar.phtml sont dans app/views/scripts/index/

Maintenant (c'est la que ca se corse) j'utilise un deuxieme controlleur et la vue info.phtml que je veux rendre avec $this->layout()->content; se trouve dans app/views/scripts/info/info.phtml

Dans mon nouveau controlleur "info" : app/controllers/InfoController.php , je ne peux plus faire appel ni au menu ni au sidebar avec $this->render('menu','menu'); et $this->render('sidebar','sidebar');
Mais j'ai le rendu de info.phtml par defaut et de header + footer
(header et footer sont dans le meme dossier que mon layout)

Qu'est ce qui ne va pas dans ma maniere de proceder ?
J'aimerai être éclairé pour pouvoir resoudre mon probleme, merci d'avance pour vos réponses
wink

Dernière modification par _Fuse_ (21-08-2008 14:38:19)

Hors ligne

 

#2 21-07-2008 08:46:00

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

--Up--

Bonjour,

Je n'ai toujours pas trouvé de solution, et aucune reponse à ma question neutral , mais je ne dois pas être le seul à utiliser le Zend_Layout avec plusieurs controlleurs et des vues dans differents dossier ? hmm

Help  ^^

Dernière modification par _Fuse_ (24-07-2008 13:58:37)

Hors ligne

 

#3 06-08-2008 12:25:56

Teedee
Nouveau membre
Date d'inscription: 06-08-2008
Messages: 4

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

As tu trouvé une solution à ton problème ? Peut-être que cela pourrait m'éclairer également, merci

Hors ligne

 

#4 07-08-2008 09:06:29

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Bonjour,

Arf non je n'ai pas trouvé la solution, et c'est très génant.
J'en profite pour faire un nouvel  appel : et vous comment gerez vous ce cas de figure ?

(les vacances sont la, se qui expliquerait le peut de reponse)

see y@

Hors ligne

 

#5 07-08-2008 09:52:43

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Salut,

J'ai un problème d'accès à la doc, mais il me semble que ce que tu cherche s'appelle l'actionStack.

Cela permet de chainer tes action dans une vue (et donc ton layout) pour dire justement, ceci est le menu, controller truc action menu, ceci est les membres connecter, controller truc action OnlineMembers et ainsi de suite.  je ne l'utilise pas (encore) mais il me semble que c'est ça...


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#6 07-08-2008 10:11:31

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Tu as plusieurs solutions.
Comme me dit Asfaloth, actionStack :

Code:

public function init()
  {
    $this->_helper->actionStack('sidebar', 'nav', 'general', array(
      'mod'  => $this->_request->getModuleName(),
      'ctrl' => $this->_request->getControllerName(),
      'act'  => $this->_request->getActionName(),
    ));

public infoAction()
{
}

Lorsque tu apelles infoAction, ca passe d'abord par init, et l'actionStack rajoute dans la pile d'action, une nouvelle action.
Ici, ca va executer /general/nav/sidebar
Les paramètres que je passe sont utilisés uniquement pour savoir quel lien est 'actif'.
Mais tu peux faire comme tu veux, tu peux carément passer le menu que tu veux générer par exemple

Dans ton action sidebar tu places ca :

Code:

$this->render(null, 'sidebar');

C'est a dire qu'il va faire le rendu de la vue qui lui correspond (nav/sidebar.phtml) et le placé dans le segment 'sidebar'
Ainsi, dans ton layout :

Code:

<?= $this->layout()->sidebar;?>

Sinon, tu as d'autres solution avec l'aide de vu action
dans ton layout.phtml

Code:

<?= $this->action('sidebar', 'nav', 'general')?>

Mais attention, le comportement d'action est bizarre. Bien que tu executes general/nav/sidebar, ca sera dans le context de requète initial (info).
En gros, par défaut, general/nav/sidebar va s'executer, mais le viewrenderer va fonctionner comme si tu étais toujours dans infoAction, et donc, tu vas faire le rendu de sidebar.phtml mais dans le répertoites des vues qui correspond à celle d'info.
Ca peut être interessant si tu places des sidebar.phtml dans tous tes répertoires de vues.

A toi te tester et voir ce qui te convient le mieux.


----
Gruiiik !

Hors ligne

 

#7 08-08-2008 10:50:10

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Salut,
merci beaucoup pour ces réponses.

Je test des que possible (je suis obligé de finir des priorités sur mon projet, et comme tout projet, ce qui manque le plus c'est du temps tongue )
Ensuite je posterais la solution que j'ai retenu.

++

Dernière modification par _Fuse_ (08-08-2008 10:50:41)

Hors ligne

 

#8 21-08-2008 09:35:32

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [][Zend_Layout][1.5]Layout lien avec des vues dans differents dossiers

Re,

Ayé, ca marche ! big_smile

J'ai essayé plusieurs choses avant de trouver ($view->setScriptPath('/chemin/des/vues'); ou $layout->setScriptPath('/chemin/des/layout');...
Apres j'ai utilisé $this->_helper->actionStack() (merci pour l'info wink ), ca ne marché toujours pas, j'ai donc crée une action correspondant a la vue que je voulais rendre avec l'appel  à  la vue.

Comme ceci:

public function sidebarAction(){
     $this->render('sidebar', 'sidebar');
}

et dans l'init de mon controlleur :

$this->_helper->actionStack('sidebar', 'chemin', 'des', 'vues');

Voila, maintenant ca roule, et je suis bien content wink

++

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