Правильно ли отображать представления ZF2 внутри ответа JSON?

У меня есть действие, которое получает список элементов и выводит фид JSON, однако для каждого элемента фида JSON мне нужно вывести ключ "содержимого" со значением, установленным в HTML, из шаблона (который заполняется текущие значения элемента).

(Это для всплывающих маркеров с листовкой JS)

JSON:

{
    1: {
        id: 1,
        lat: "30.0000",
        lng: "7.0000",
        content: "TO DO HTML"
    },
    2: {
        id: 2,
        lat: "42.2300",
        lng: "5.5600",
        content: "TO DO HTML"
    },
}

Поэтому мне нужно заполнить контент, чтобы он выглядел больше как:

{
    1: {
        id: 1,
        lat: "30.0000",
        lng: "7.0000",
        content: "<div id='item_1'><h1>Title of item 1</h1><div id="description">item 1 description from $list doctrine entity</div></div>"
    },
    2: {
        id: 2,
        lat: "42.2300",
        lng: "5.5600",
        content: "<div id='item_2'><h1>Title of item 2</h1><div id="description">item 2 description...</div></div>"
    },
}

Но я понятия не имею, как правильно это настроить? У меня есть файл phtml, но я не знаю, как это сделать, мое основное понимание заключается в том, чтобы сделать что-то вроде:

foreach($list as $key => $item) {
    $view = new View('myPhtml');
    $view->setVariables('data', $item);
    $json[$key]['content'] = $view;
}

?

1 ответ

Решение
public function fooAction()
{
    $renderer = $this->getServiceLocator()->get('ViewRenderer');
    $json = array();

    foreach($list as $key => $item) {

        $json[$key] = $item;

        $content = new ViewModel(array('data' => $item));
        $content->setTempalte('module/foo/bar');

        $json[$key]['content'] = $renderer->render($content);
    }

    return new JsonModel($json);
}
Другие вопросы по тегам