2013-06-19 3 views
1

В настоящее время мы пытаемся настроить маршруты таким образом, чтобы возвращаемый тип содержимого можно было установить с помощью параметра маршрута. Теперь маршрутизация работает правильно, но есть одна проблема. Если вы запрашиваете html, то отображается обычный скрипт представления. Данные, которые мы предоставляем этому сценарию, могут быть любыми: от строки до коллекции объектов, а сценарий представления определяет, что показывать пользователю.zf2 json view script

Если, однако, запрошен ответ JSON, мы просто предоставляем данные, возвращенные с нашего контроллера как JSON. Однако некоторые данные не должны быть общедоступными для пользователя, и, следовательно, требуется некоторая фильтрация. Есть ли возможность использовать сценарии просмотра JSON (как в ZF1 с контекстным переключателем) для поддержки такой фильтрации? Или, может быть, другой метод?

+0

Вы можете привести пример того, что вы имеете в виду, это не ясно. – Andrew

+0

Хорошо, скажем, в нашем контроллере мы имеем 'return ['users' => $ users]' и '$ users' - это коллекция объектов , Обычно (с помощью скрипта вида phtml) мы будем использовать только части этих пользователей (например, '$ user-> getFullname()' и '$ user-> getBla()'). Если же запрашивается JSON, то эти пользователи превращаются в JSON, и даже свойства, которые не должны быть раскрыты, видны в ответе. Следовательно, нам нужен какой-то сценарий вида, который возвращает JSON, чтобы мы могли фильтровать, какие свойства релевантны для текущего запроса. Надеюсь, теперь это имеет смысл ... –

ответ

1

Нет такой вещи, как сценарий JSON, который позволяет вам решить, что делать, а что нет. Вы должны предоставить правильные данные в модели просмотра, чтобы были предоставлены только данные, которые могут быть отображены.

Я думал о крючке в рендерере JSON, чтобы вы могли фильтровать данные модели представления на основе контекста запроса, но такой вещи еще не существует. К сожалению, вам нужно выбрать данные в вашем контроллере или модели.

+0

Хорошо, что это плохо. Спасибо за этот ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^