2013-06-25 5 views
0

Если вам нужен формат вывода JSON, XML и т. Д. Als, можно использовать AcceptableViewModelSelector Controller Plugin или/(()) alternate rendering/response strategies.Когда в Zend Framework 2 должны использоваться приемлемые методы отображения и моделирования рендеринга/ответа?

Когда должен применяться один и другой (и когда комбинация)?

Может ли комбинироваться?

+1

Могли бы вы мольбы e комментируйте свои downvotes. – automatix

ответ

3

Ну, Стратегии в основном слушатели. Слушатели, которые дают действие в зависимости от того, какая модель будет возвращена из ваших действий с контроллерами. Если вы вернете ViewModel, то состоится PhpRendererStrategy. Если вы вернете JsonModel, то JsonStrategy сделает все, и если вы вернете FeedModel, то это будет FeedStrategy.

Однако Стратегии применяются только в том случае, если они зарегистрированы. Поэтому, если вы вернете JsonModel без регистрации JsonStrategy, ничего не произойдет.

Существует AcceptableViewModelSelector, чтобы обеспечить более легкий доступ и обработку различных моделей ModelFormats в зависимости от заголовка accept. Это помогает сделать вещи проще, не больше, не меньше.

Стратегии, вы также можете зарегистрировать свой собственный. Там есть модули, в которых есть PdfStrategy, которая будет выдавать PDF-документ, если вы сообщите об этом.

Чтобы настроить это вниз немного на ваш вопрос:

  • стратегии были там с самого начала ZF 2.0
  • Контроллер плагин AVMS получил только в некоторое время в ZF 2.1 просто сделать вещи проще - Вот почему в этом нет ничего больше, чем «плагин»;)

Если это на самом деле не покрывает ваш вопрос, я довольно небезопасные о том, как ответить вам ^^

+0

Это означает, что если мне нужно несколько типов вывода в зависимости от значения «Accept», мне нужно использовать комбинацию «AcceptableViewModelSelector» и стратегий? Подход состоит в следующем: (0. Реализовать стратегию, если требуется индивидуальная). 1. Зарегистрируйте стратегии; 2. Определите значение «Accept» с помощью «AcceptableViewModelSelector»; 3. (В методе Controller action/REST) ​​Возвращает объект ViewModel, поддерживаемый одной из зарегистрированных стратегий; 4. «Zend \ View \ View» будет обрабатывать объект «ViewModel» в соответствии с/с помощью стратегии. Я правильно понимаю подход? – automatix

+0

Я думаю, вы поняли это правильно, даже если вы думаете слишком сложным. AVMS - это только HELPER, чтобы автоматически выполнять согласование «accept-header-to-rendering-strategy»;) в фоновом режиме все AVMS выполняет работу с заголовком и выбирает соответствующую стратегию rendeirng, а также регистрирует стратегии;) Я думаю, что у вас все в порядке, даже если для меня это звучит сложно, что вы говорите: D – Sam

+0

Становится ясным ... :) Спасибо за ваш ответ и комментарий! – automatix