Comment passer des variables à la mise en page?
Je sais comment passer des variables à partir de contrôleur en vue:
$this->render('view_name', array('variable_name'=>'variable_value'));
cependant, je voudrais passer des variables à disposition. La seule connexion entre le contrôleur et la mise en page semble être le public attribut $layout de contrôleur de classe, comme ceci:
public $layout='//layouts/column2';
Cependant, je ne vois pas un moyen de passer une variable?
source d'informationauteur Milan Babuškov
Vous devez vous connecter pour publier un commentaire.
À partir de votre contrôleur, vous pouvez faire quelque chose comme ceci:
et accéder aux variables à partir de votre point de vue comme ceci:
et voici votre réponse; vous pouvez accéder à ces mêmes variables à partir de la mise en page comme ceci:
Alternativement, vous pouvez ajouter une propriété dans le Contrôleur comme
Puis sortie dans la mise en page (//layouts/colonne2)
Il ne semble pas vraiment être mis en place pour le faire facilement à partir de ce que je peux dire, donc, si vous êtes en s'appuyant sur elle pour la laisser passer beaucoup de données, vous pouvez penser à une autre façon de configurer votre application.
Un couple de façons que vous pouvez faire sont à utiliser la Yii params via
que vous pouvez définir dans le contrôleur et l'accès dans la mise en page. Sinon, vous pouvez utiliser régulières en PHP les variables globales, avec tous les problèmes qui approche implique.
Dans votre contrôleur, vous feriez quelque chose comme:
et dans la mise en page:
(Même si ce n'est pas dans une fonction, vous avez encore besoin de le récupérer via GLOBALS.)
Vous pouvez passer d'un objet de cette manière plus structurée de données, mais vous êtes toujours à l'aide d'un mondial var. Un autre, peut-être même moins souhaitable, serait par l'intermédiaire d'une session var, par exemple,
Yii::app()->session['myvar']
ou un Yii "message flash".dans le contrôleur de passer la variable, puis, dans la VUE (pas de mise en page encore)
créer
Maintenant dans la mise en page, vous pouvez accéder à toute la gamme avec juste
Espère que cela vous aide.
Après des ensembles de débogage dans Yii2 j'ai trouvé que les seules variables (à l'exclusion des variables globales qui sont accessibles à l'intérieur d'un fichier de mise en page sont _file_ (chemin d'accès actuel fichier de mise en page) et _params_ (un tableau contenant la variable contenu c'est une sortie HTML bufferized à partir d'un fichier passé pour le rendu à partir d'un contrôleur).
À l'exception des réponses fournies par @ldg (que je considère comme le plus utile et instructif, mais des ressources, dépenses) et @Petra Barus.
Je suis également venu avec une bonne solution de la division de mise en explicite les fichiers et de les appeler à l'intérieur d'un fichier de rendu: