我目前正在使用Symfony2框架构建一个程序,并利用该平台附带的许多不错的新功能,如Doctrine,Twig等。
我的一个页面要求我在页面加载完成后通过AJAX加载大量数据。这很容易通过JQuery / Ajax实现,但我想这样的事情会有一种方法可以通过JSON将ajax直接注入到Twig模板中,并将其填充到for循环中。
<table>
<tr><td>header</td></tr>
{% for row in rows %}
<tr><td>{{row.data}}</td></tr>
{%endfor%}
</table>
像这个粗略的例子。
我确实快速浏览了文档,但是搜索结果已经停止,我无法直接找到任何内容。如果我正在寻找的话,文档链接就足够了。
答案 0 :(得分:1)
我认为最干净的方法是在控制器中生成Json。 周围的东西:
/**
* @route("/json", name="json_generator")
*/
public function jsonAction() {
// do your for loop and build up a $jsonArray
return new Response( json_encode($jsonArray) );
}
然后在浏览器中测试它的响应,并在twig模板中使用Javascript加载它。 现在没有具体的代码,但从头到尾:
$(document).ready(function() {
$.ajax({
ajax: true,
url: "{{ path('/json') }}"
});
};
这样你就明白了。希望它可以作为一个基本的例子 -
答案 1 :(得分:0)
有两种方式: 1.在控制器渲染html中发出AJAX请求并将其返回给脚本。然后在需要时添加。 2.发出AJAX请求,返回JSON并在脚本中构建html,然后将准备好的html添加到您的特定位置。
我认为更好的方法是在您的操作中渲染html并将其返回到您的AJAX脚本