2017-02-23 25 views
1

В Symfony 3 У меня есть сортировка, и я использую ajax для получения объектов из бэкэнд.Вывод объектов из Ajax в Twig

Это в контроллере:

if($request->getMethod() === 'POST' && isset($_POST['sort'])) { 
    if($_POST['sort'] === 'title_up') { 
    $products = $em->createQuery("SELECT a FROM AppBundle:Product a ORDER BY a.title ASC")->getArrayResult(); 
... etc. 
    } 
} 

return new JsonResponse($products); 

я получаю объект в веб-интерфейсе:

$('#form_select').on('change', function()  { 
    var path = "{{ '/' }}"; 
    var optionSelected = $("option:selected", this); 
    console.log(path); 
    var valueSelected = this.value; 
    if($.trim(valueSelected) != '') 
    { 
    /*$('#items').text(data);*/ 
    $.post(path, {sort : valueSelected}, function(data) { 
    console.log('dump', data[0].title); 
    for(var i = 0; i < data.length; i++) { 
     $('#items').append(data[i].title) 
     } 
    }) 
    } 
}); 

Возникает вопрос: Есть ли лучший способ для визуализации объектов, чем с помощью цикла и добавления данных [i] .Описание, данные [i] .title ... и т. д.?

Я использую ветку, и было бы здорово, если бы я мог передать переменные данные на веточку, чтобы создать представление, в котором я нуждаюсь. (Точно так же, как я выношу любую другую переменную, переданную от контроллера к веточке)

+1

использовать шаблон двигатель, если вы не любите Append, веточка PHP вы в настоящее время работаете с js – madalinivascu

ответ

1

Twig - это шаблон для PHP, поэтому он является серверным. Это означает, что вы не можете напрямую передать что-то из своего интерфейса (JS) в Twig.

Но вы все еще можете сделать шаблон прут в контроллере и вернуться в асинхронности вызова и вставьте, где вы хотите в вашем frondend

return new JsonResponse([ 
    'html' => $this->renderView('your_twig_file.html.twig', ['products' => $products]) 
] 
); 
+0

Это должно получить больше любви. –

Смежные вопросы