Zend Framework - повторное использование информации заголовка представления через контроллер - PullRequest
2 голосов
/ 15 июля 2010

В Zend Framework у меня есть общий случай использования, когда мне нужно распространять одну и ту же информацию в верхнем разделе представления по определенному контроллеру.

Например, если у меня есть контроллер "Book"Я хочу отобразить сводную информацию о книге в верхней части страницы и иметь интерфейс с вкладками под книгой для отображения комментариев, подробной информации и т. Д. Каждая вкладка - это действие в контроллере книг.Каков рекомендуемый способ распространения сводной информации по представлениям в контроллере таким образом:

  1. Я не получаю непрерывную информацию сводной книги в каждом действии.
  2. Я не являюсьповторяя информацию в моих представлениях.

Хотя я и использовал Zend View Helper, заполнитель или помощник действия ($ this-> action ...) из представления.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Я бы загружал содержимое вкладок динамически (должно быть легко интегрироваться с вашим текущим решением через помощник действий AjaxContent. Просто загрузите ответ действия в ваш контейнер вкладок.

Если вы решите придерживаться решения, не связанного с Ajax, код должен быть повторяющимся, поскольку вам нужна одна и та же информация о фрагменте на нескольких страницах. A partial должен лучше подходить для ваших нуждпоскольку помощник вида выполняет некую логику (или прокси для логики), тогда как она нужна вам только для представления и разметки.

Полученная информация не должна быть настолько сложной в вашей системе, если вы используете какой-то интеллектуальный кешметод (возможно, одна запись кэша для каждого раздела / вкладки).

0 голосов
/ 15 июля 2010

Звучит так, будто вы хотите получить информацию о книге методом init() на контроллере:

class MyController extends Zend_Controller_Action
{
     protected $_book;

     public function init()
     {
         // get the book data/model, etc
         $book = $this->_getBook();

         // if necessary, store the book for use in the actions
         $this->_book = $book;

         // store the book in the view
         $this->view->book = $book;
     }
}

Если действие отображает только информацию о книге, то вы, вероятно, можете избежать использования пустых методов действия, позволяя сценариям вида делать свое дело.

Единственным недостатком этого является то, что он получает данные книги при каждом действии. Так что, если есть какие-то действия, которые не требуют данных книги, вам придется потратить на это лишние затраты.

...