AJAX调用如何与TWIG工作(How AJAX calls work with TWIG)

2019-08-05 13:31发布

我想了解的树枝如何通过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调用的结果。 我只需要这一个简单的例子,东西比什么是嫩枝的配方页面的更多。

Answer 1:

有几种方法来实现这一目标:

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的文档。 最好的办法是第一个解决方案,分开你的代码。



Answer 2:

直接在模板:

{% if app.request.isXmlHttpRequest() %}
  // code if ajax request
{% else %}
  // code if not ajax request
{% endif %}


文章来源: How AJAX calls work with TWIG