Где разместить код, требуемый для макета в Zend Framework? - PullRequest
1 голос
/ 02 сентября 2010

Я использую Zend_Layout для макета моего приложения Zend Framework. Это очень просто, но у меня еще есть несколько операций, которые мне нужно сделать в макете. На данный момент код включен в скобки PHP, но я чувствую, что на самом деле это не самый чистый путь.

Я видел людей, использующих плагины, но я не думаю, что я так хочу. Очевидно, что я мог бы извлечь «сложную» часть, сделать это хорошим способом действия / контроллера и использовать заполнитель в макете. Это путь? У вас есть примеры таких вещей (например, меню навигации, делегированное в собственном действии)?

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

navigation() является конкретной реализацией помощника представления заполнителя.

Вы можете создать такую ​​же реализацию заполнителя или использовать

  • include ('myhtml.phtml');
  • $this->render('script.phtml');
  • частичные
  • частичные циклы
  • заполнители
  • просмотр помощников

Зависит от того, что делатьвам нужно.

Стек действий - это зло, как вы, наверное, уже слышали.

1 голос
/ 06 сентября 2010

Как сказал Такин, месторасположение навигатора () - это, вероятно, путь.Однако я не хотел проходить настройку Zend_Navigation для этого конкретного случая, поэтому я использовал пользовательский помощник вида .

application/views/helpers/Menu.php:

<?php

class Zend_View_Helper_Menu extends Zend_View_Helper_Abstract {

    public function menu() {
        // my code ...
        $this->view->menu = $menu;

        return $this->view->render('helpers/menu.phtml');
    }

}

application/views/scripts/helpers/menu.phtml:

<ul>
    <?php foreach ($this->menu as $item) { // print menu } ?>
</ul>

Таким образом, я могу просто вызвать этого помощника из моего макета:

...
<div id="menu">
    <?php echo $this->menu(); ?>
</div>
...
...