2013-07-19 2 views
1

Я активировал JsonStrategy в приложении ZF2 и теперь могу получить вывод JSON, используя AcceptableViewModelSelector Controller Plugin.Где определяется соответствующий тип вывода JSON в Zend Framework 2?

Он работает только с параметром HTTP-запроса Accept, содержащим application/json.

Где application/json определяется как правильное значение для выхода JSON? (Как) Могу я определить и использовать foo/bar?

ответ

0

Непосредственно в массиве определений принимают критерии:

class SomeController extends AbstractActionController 
{ 
    protected $acceptCriteria = array(
     'Zend\View\Model\JsonModel' => array(
     'application/json', // <-- here 
    ), 
     'Zend\View\Model\FeedModel' => array(
     'application/rss+xml', 
    ), 
    ); 

    public function apiAction() 
    { 
     $viewModel = $this->acceptableViewModelSelector($this->acceptCriteria); 

     // Potentially vary execution based on model returned 
     if ($viewModel instanceof JsonModel) { 
     // ... 
     } 
    } 
} 
1

Посмотрите здесь:

Zend\View\Strategy\JsonStrategy; 

Вы можете реализовать свою собственную стратегию таким же образом, не проблемы. Гораздо чище, чем жесткое кодирование в контроллер, поскольку его можно повторно использовать.

+0

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