Как работает AJAX с TWIG

Я пытаюсь понять, как Twig может загрузить шаблон через AJAX. С их сайта ясно, как загрузить шаблон (http://twig.sensiolabs.org/doc/api.html)

echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); 

Но как это работает для вызова AJAX? Как бы вы сказали Twig, что хотите «визуализировать» что-то, что является лишь частью index.html … и не перезагружать всю страницу? Я посмотрел на единственный пример Ajax Twig (http://twig.sensiolabs.org/doc/recipes.html), но это не объясняет, как Twig знает, какую часть страницы вы хотите изменить. Предполагая, что ваш вызов Ajax приводит к обновлению содержимого страницы. Мне просто нужен простой пример этого, что-то большее, чем на странице рецептов Twig.

Существует несколько способов сделать это:

1) Отделите свой index.html в нескольких файлах, таких как index.html и content.html. Затем используйте функцию include в 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')); 

Изменить: если вы выполняете свой запрос ajax с помощью jQuery, например:

 $.get('yoururl', function(data) { $('#divtoremplace').html(data); }); 

2) Используйте request.ajax boolean в вашем 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 %} 

Не уверен во втором, но это должно делать трюк в соответствии с документацией. Лучший способ – это первое решение, отделите свой код.

Непосредственно в шаблоне:

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