2010-11-29 2 views
1

Я работаю над книгой «Zend Framework - руководство для новичков». В части третьей главы описывается работа с masterlayout.Как получить параметры в макете Zend

Для моей навигации я хотел бы динамически установить id-атрибут тела. Как я могу получить параметр с любого контроллера в этот макет-файл?

Мастер-макет установлен в application.ini:

resources.layout.layoutPath = APPLICATION_PATH "/layouts" 
resources.layout.layout = master 

приветствия Frank

ответ

2

Вы можете использовать вид вары для простых переменных, которые нужно передать в компоновочных скриптов:

В вашем контроллере:

function indexAction() 
{ 
    $this->view->pageTitle = "Zend Layout Example"; 
} 

В вашем скрипте макета:

<html> 
<head> 
    <title><?php echo $this->escape($this->pageTitle); ?></title> 
</head> 
<body></body> 
</html> 
2

Лучший способ сделать это состоит в использовании заполнителей. Вот пример макета:

master.phtml 
------------ 
<html> 
    <head> 
     <title>My Master Layout</title> 
    </head> 
    <body id="<?= $this->placeholder('my_dynamic_id_attrib'); ?>"> 
    ... 
    </body> 
</html> 

Обратите внимание, что значение атрибута «ID» начинается с «<?=». Это то же самое, что и «<?php echo», и оно должно работать правильно, если вы используете файл .htaccess по умолчанию, который рекомендует Zend. Если «<?=» не работает для вас, просто замените его:

<body id="<?php echo $this->placeholder('my_dynamic_id_attrib'); ?>"> 

Теперь в контроллере, вы можете установить динамический идентификатор с помощью:

IndexController.php 
------------------- 
public function indexAction(){ 

    //------------------------------------ 
    // Can either be $_GET or $_POST, etc. 
    $dynamicParam = $this->_getParam('id'); 

    //------------------------------------ 
    // Set the dynamic id 
    $this->view->placeholder('my_dynamic_id_attrib')->set($dynamicParam); 
} 
+0

ТНХ, я использовал wajiws пример – 2010-11-29 18:57:04

Смежные вопросы