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?
3
A
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();
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
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.
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
Essayez $ view = $ layout-> getView(); $ view-> header = 'test'; puis echo $ this-> en-tête dans votre mise en page. –
dcaunt // merci !! $ view-> layout() -> header = "test"; travaux!! Je vous remercie!! – Moon