0
votes

Comment passer des variables du contrôleur à la mise en page (non vue) dans Zend 3

J'utilise Zend MVC 3.1.1 et j'essaie de passer des variables de l'action du contrôleur appelée à la mise en page, mais avoir de vraies difficultés à trouver un moyen de le faire. Je n'ai pas trouvé de solution en ligne pour ce problème.

Voici mon contrôleur de base 'Render' méthode appelée à créer le modèle de vue. P> xxx pré>

et ici est un snipped de ma mise en page. p>

p>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><!-- I WANT TO PUT VARIABLE HERE --></title>
    </head>
    <body>
            <?=$this->content?>
    </body>
</html>


4 commentaires

Vous pouvez regarder Stackoverflow.com / Questions / 16665010 / ...


Cela ne fonctionne pas pour moi. Je dois utiliser la variable dans la page de layout, pas le modèle / la vue et je dois le transmettre à partir du contrôleur. Cette méthode me permet d'accéder à la variable dans la vue, mais pas de la mise en page qui la contient.


Oui. J'ai essayé un certain nombre de fois mais la seule variable que j'ai accès à la mise en page est $ Ceci-> Contenu. Faire un print_r ne montre que $ ceci-> contenu comme variables accessibles.


Vous devez utiliser une fenêtrePhelper. Jetez un coup d'œil à un Bon livre sur Mise en route avec ZF3


3 Réponses :


0
votes

ESSAYEZ

....
$viewModel = new ViewModel();

$viewModel->setVariables(
   [
      'controller' => $controller,
      'action' => $action,
   ]
);

$viewModel->setTemplate( $controller . "/{$action}.php" );

return $viewModel;
...


1 commentaires

Ne marche pas. Les variables ne sont alors pas accessibles dans le modèle mais pas la mise en page. Je dois définir la variable (S) dans le contrôleur et avoir accès à celui-ci dans la mise en page, c'est-à-dire le script de page / PHP contenant la vue / modèle.



-2
votes

J'ai résolu ce problème en stockant l'instance MVCEvent à partir de l'événement Module Onbootstrap dans une instance d'une classe de layoutlistener, j'ai créée pour définir la mise en page appropriée entre les modules et l'utiliser pour récupérer l'instance de modèle d'affichage et définir la variable sur celle-ci. < / p>

LayoutListener :: getinstance () -> getevent () -> geveviefmodel () -> SetVariable ("Mots-clés", $ Mots-clés);

Maintenant, je peux simplement faire "$ ceci-> mots-clés" dans la mise en page et avoir accès à cette variable.


0 commentaires

0
votes

in zend 1.x Vous pouvez définir une variable dans le contrôleur comme celle-ci xxx

puis l'attrape dans la mise en page xxx


0 commentaires