2010-04-22 6 views
0

I définir une variable de vue en fonction uneAction comme ceci:Zend Framework: l'affichage des variables dans le script de mise en page est toujours nulle

$this->view->type = "some type"; 

Quand j'accéder à cette variable à l'intérieur du script de layout comme ceci:

<?php echo $this->type ?> 

ça n'imprime rien. Qu'est-ce qui ne va pas?

Mes paramètres application.ini liés à la mise en page

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
resources.layout.layout = "layout" ; changed 'default' to 'layout' 

Modifier

Cette thread suggère la solution alternative, mais la recherche d'une solution à un problème ci-dessus. Et cela fonctionnait dans Zend 1.6.2. Je viens de passer à 1.10 et ça a cessé de fonctionner.

Modifier

Si je mets ce point de vue var dans une fonction _init Bootstrap, cela fonctionne.

Répondre

7

Si vous voulez assigner quelque chose à votre disposition, vous devez aller une autre façon:

+0

@ArneRie: Ceci est la même solution que posté dans le lien alternatif que j'ai mentionné dans edit. – understack

+0

Juste testé avec ZF 1.10.1 cela fonctionne, s'il vous plaît rappelez-vous. Vous devez utiliser layout() -> name; ?> – opHASnoNAME

+0

Oui, votre solution fonctionne mais ma question est pourquoi les vues vars ne sont pas accessibles directement? Et ça avait l'habitude de travailler plus tôt. S'il vous plaît également voir mon 2ème édition. – understack

0

Avez-vous l'entrée suivante dans votre fichier application.ini?

resources.view[] = 

Ainsi, vous pouvez initialiser le point de vue sans options et de l'utiliser par:

<?php echo $this->type ?> 
+0

Cela ne fonctionne pas dans le script de mise en page. – understack

+0

Avez-vous fait le bootstrap de vue via: $ this-> bootstrap ('view'); placé dans une méthode de ressource du fichier bootstrap.php? – bitfox

1

je crois l'objet de vue mise en page et l'objet de vue d'action sont des instances distinctes de la classe Zend_View.

Je pense que c'est la bonne façon de passer des variables du contrôleur à la mise en page:

/** 
* Controller action 
*/  
public function indexAction() 
{ 
    $this->_helper->layout()->assign('myName', 'John Doe'); 
} 

puis dans votre script de mise en page, vous pouvez accéder aux variables en faisant référence à l'objet de mise en page comme ceci:

<html> 
<body> 
<?php echo $this->layout()->myName; ?> 
</body> 
</html> 
Questions connexes