2009-10-25 6 views
3

J'essaye d'utiliser une disposition pour chaque action dans un contrôleur. Par exemple, j'ai trois actions dans le contrôleur d'index. Ceux-ci sont indexAction, testAction et welcomeAction. J'ai créé trois fichiers de mise en page XML. index.xml, test.xml et welcome.xml. Enfin, j'ai créé un plugin. Le problème est ... comment puis-je accéder à l'objet de mise en page pour définir le contenu que j'ai lu à partir de xml?Comment accéder à l'objet Layout dans le plug-in Zend Framework?

Répondre

4

La fonctionnalité de mise en page est facilement accessible via une aide d'action du contrôleur. Vous devriez être en mesure de récupérer l'assistant de disposition en utilisant la ligne suivante.

$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout'); 

Si vous n'êtes pas en utilisant la Zend_Application ou d'une autre façon de initialisant la mise en page, vous devrez peut-être appeler le premier suivant:

Zend_Layout::startMvc(); 
+0

si $ layout-> header = "test"; et l'appeler dans un fichier layout par $ this-> layout() -> header, il ne montre rien. Est-ce que tu sais pourquoi? – Moon

+0

Essayez $ view = $ layout-> getView(); $ view-> header = 'test'; puis echo $ this-> en-tête dans votre mise en page. –

+0

dcaunt // merci !! $ view-> layout() -> header = "test"; travaux!! Je vous remercie!! – Moon

1

Ce tutoriel dire exactement ce dont vous avez besoin, vous pouvez créer un xml pour la navigation et afficher dans votre layout.phtml

http://www.goodcomputingtips.com/site/2010/09/part-5-adding-menus-using-zend_navigation-a-not-so-quick-quickstart-to-zend-framework/

un exemple rapide:

Dans le fichier de démarrage

protected function _initNavigation() { 
$this->bootstrap("layout"); 
$layout = $this->getResource('layout');  
$view = $layout->getView(); 

$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav'); 
$navigation = new Zend_Navigation($config); 

$view->navigation($navigation); } 

Dans votre layout.phtml

<?php echo $this->navigation()->menu()->setMaxDepth(1); ?> 

Dans le lien que vous avez d'autres façons de configurer.

1

Pour moi, travaillé seulement

$layout = Zend_Layout::getMvcInstance(); 

et

$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout'); 

ne fonctionnait pas.