Zend Layout отображает некоторые части на каждой странице - PullRequest
4 голосов
/ 28 июня 2011

Я новичок в Zend Framework и пытаюсь понять, как они хотят отрисовывать вещи. Я создаю веб-сайт, и у меня есть меню, которое динамически создается из базы данных. Если я вызываю правильное действие, я правильно вижу представление menu.phtml.

Теперь я хотел бы, чтобы этот menu.phtml отображался на каждой странице, и я понятия не имею, как это сделать. Я читал о заполнителях, помощниках, но, похоже, не понимаю.

Полагаю, мне нужно вызвать действие, чтобы сгенерировать menu.phtml, отобразить его и поместить в Заполнитель я могу позвонить из моего layout.phtml, но я не вижу, как я это делаю.

Заранее спасибо.

РЕШЕНИЕ:

В layout.phtml я добавил следующую строку:

<?php echo $this->action('menu',
                            'page',
                            null,
                            array());?>

Это позволит получить доступ к menuAction в PageController и запустить его. Переменные будут заполнены, необходимый код будет выполнен перед рендерингом скрипта представления menu.phtml.

1 Ответ

4 голосов
/ 28 июня 2011

Вы можете сделать что-то вроде этого:

Предположим, вы показываете меню в каком-то элементе div, называемом 'header'.

<div id='header'><?= $this->render('menu.phtml'); ?></div>

Вы должны добавить правильный путь для доступа к menu.phtmlв вашем рабочем контроллере.

public function init() {

        $this->view->addScriptPath(APPLICATION_PATH . '/views/scripts/');
}

Если вы хотите передать значения в файл menu.phtml.

<?php echo $this->partial('page/menu.phtml', array('var1'=>'value1','var2'=>'value2') ); ?>
...