我想了解的树枝如何通过AJAX加载模板。 从他们的网站,它是清楚如何加载模板(http://twig.sensiolabs.org/doc/api.html)
echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here'));
但是,如何将这项工作的AJAX调用? 你将如何告诉枝条要“渲染”的东西,仅仅是index.html的一部分...而不是重新加载整个页面? 我看着枝条唯一的Ajax例子(http://twig.sensiolabs.org/doc/recipes.html),但是这并不能说明枝条怎么知道你想改变页面的哪一部分。 假设在页面的内容更新您的Ajax调用的结果。 我只需要这一个简单的例子,东西比什么是嫩枝的配方页面的更多。
有几种方法来实现这一目标:
1)分离您的index.html在几个文件中像index.html,然后content.html。 然后使用包括在index.html的功能包括content.html。
例如:
if(isAjaxRequest()) //try to find the right function here
echo $twig->render('content.html', array('the' => 'variables', 'go' => 'here'))
else
echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here'));
编辑:如果你使用jQuery做你的Ajax请求,例如:
$.get('yoururl', function(data) {
$('#divtoremplace').html(data);
});
2)使用request.ajax
布尔在您的index.html
{% if request.ajax == false %}
<p>My header, not reloaded with ajax</p>
{% endif %}
<p>My content, reloaded with ajax</p>
{% if request.ajax == false %}
<p>Other content, not reloaded with ajax</p>
{% endif %}
不知道第二个,但是这应该做的伎俩accordind的文档。 最好的办法是第一个解决方案,分开你的代码。
直接在模板:
{% if app.request.isXmlHttpRequest() %}
// code if ajax request
{% else %}
// code if not ajax request
{% endif %}