Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut,
Mon problème porte sur le fait que quand l'on utilise un Action View Helper
$this->action($action, $controller, $module = null, array $params = array())
celui si supplante le layout de l'action qui l'a appellé.
Ainsi si j'utilise un action 'action1' et un layout 'layout1', et que je fais appel à l'Action View Helper via echo $this->action d'un action 'action2' et layout 'layout2', l'on aurais pu penser que le $this->action génère le code et se contente de l'afficher, mais en fait il remplace le layout 'layout1' de 'action1' par le layout de 'layout2'.
Et donc, si je désactive le layout sur une action via
$this->_helper->layout->disableLayout();
et que je fais $this->action de cette action ci sur une page qui utilise un layout, le layout est désactivé partout.
Je pensais que cela marcherais comme un include amélioré mais que neni.
Y aurais t'il un moyen de contourner cela ?
Hors ligne
Salut,
il faut faire le disableLayout dans l'action que tu appelles et ça fonctionne
Hors ligne
Mais je veux garder le layout principal.
C'est dans l'action que "j'inclus" que je ne veux pas mettre le layout.
Pour moi question perfs, ca doit quand meme etre lourd d'appeller l'action avec le layout quand c'est un layout compliqué. Juste le code généré ce serais parfait !
Hors ligne
oui, je l'ai peut être mal dit mais c'est bien dans l'action que tu inclus qu'il faut faire disableLayout
dans ton controller
public function actionPrincipaleAction() { // l'action principale avec du code } public function actionIncluseAction() { $this->layout()->disableLayout(); }
et tes vues
action-incluse.phtml
<div>pouet</div>
action-principale.phtml
$this->action('action-incluse','moncontroller'); <div>toto</div>
Hors ligne
Salut, je suis confronté au même problème et ça ne fonctionne pas. Le contenu de la première action s'affiche bien, celui de la seconde aussi, mais pas avec le bon layout. Il force l'affichage par défaut "default", ce qui ne convient pas, puisque 2 lignes plus haut, j'ai fait : $this->_helper->layout()->setLayout('groumph');
La seule solution trouvée pour le moment est de passer le layout de l'action mère à l'action enfant, mais ce n'est guère très propre et très optimisé.
Dernière modification par Cidrolin (13-12-2008 12:59:22)
Hors ligne