Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSON响应中正确呈现ZF2视图?_Json_View_Zend Framework2 - Fatal编程技术网

在JSON响应中正确呈现ZF2视图?

在JSON响应中正确呈现ZF2视图?,json,view,zend-framework2,Json,View,Zend Framework2,我有一个获取项目列表并输出JSON提要的操作,但是对于JSON提要中的每个项目,我需要从模板输出一个值设置为HTML的“content”键(该模板由项目的当前值填充) (用于带有传单JS的弹出标记) JSON: 所以我需要填写内容,这样看起来更像: { 1: { id: 1, lat: "30.0000", lng: "7.0000", content: "<div id='item_1'><h1>T

我有一个获取项目列表并输出JSON提要的操作,但是对于JSON提要中的每个项目,我需要从模板输出一个值设置为HTML的“content”键(该模板由项目的当前值填充)

(用于带有传单JS的弹出标记)

JSON:

所以我需要填写内容,这样看起来更像:

{
    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视图进行解析并返回正确的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>"
    },
}
foreach($list as $key => $item) {
    $view = new View('myPhtml');
    $view->setVariables('data', $item);
    $json[$key]['content'] = $view;
}
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);
}