如何将树枝呈现的模板作为 JSON 响应的一部分返回?

Posted

技术标签:

【中文标题】如何将树枝呈现的模板作为 JSON 响应的一部分返回?【英文标题】:How do I return a twig rendered template as part of a JSON response? 【发布时间】:2012-10-26 18:25:03 【问题描述】:

我想返回一个 html sn-p 以及 json 字符串中的其他值,这就是我所拥有的:

$html = $this->render('sometemplate.html.twig', array( 'somevar' => $somevar ) );
$response = new Response(json_encode( array("html" => $html, "name" => "Joe Bloggs") ));
$response->headers->set('Content-Type', 'application/json');
return $response;

但我得到的只是"html":"headers":。有没有办法只抓取呈现的 HTML?

【问题讨论】:

【参考方案1】:

请改用$this->renderView()

$this->render() 返回一个Response 对象,而$this->renderView() 返回一个由渲染模板产生的字符串。

【讨论】:

只是添加这些方法是 Symfony 的一部分。 Twig 核心库使用 $twig->display 来输出内容,而 $twig->render 返回内容。可能有点混乱! :-) 另一种方法是使用 Response 对象的 getContent() 方法。

以上是关于如何将树枝呈现的模板作为 JSON 响应的一部分返回?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查表单字段中是不是有呈现控制器的树枝模板中的数据

如何在Symfony2中将json渲染成树枝

Ruby API响应视图:如何呈现JSON响应?

在 grails 服务中使用 g.render

与 AngularJS 一起使用时,Django 模板不呈现 JSON 响应

将来自 Json 响应的 HTML 标记渲染到模板文字