Jquery 将对象从Ajax输出到Twig

Jquery 将对象从Ajax输出到Twig,jquery,ajax,twig,symfony,Jquery,Ajax,Twig,Symfony,在symfony3中,我有一个排序,我使用ajax从后端获取对象 这在控制器中: 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")-&

在symfony3中,我有一个排序,我使用ajax从后端获取对象

这在控制器中:

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)
       }
     })
   }
});
$('form#u select')。在('change',function()上  {
var path=“{{'/'}}”;
var optionSelected=$(“选项:已选择”,此选项);
console.log(路径);
var valueSelected=此值;
如果($.trim(valueSelected)!=“”)
{
/*$(“#项”)。文本(数据)*/
$.post(路径,{sort:valueSelected},函数(数据){
console.log('dump',数据[0]。标题);
对于(变量i=0;i
问题是:有没有比使用循环和添加数据[i]更好的方法来渲染对象。说明,数据[i]。标题。。。等等


我正在使用twig,如果我能以某种方式将变量数据传递给twig以创建我需要的视图,那就太好了。(就像我渲染从控制器传递到twig的任何其他变量一样)

twig是PHP的模板引擎,所以它是服务器端的。这意味着您不能将某些内容从前端(JS)直接传递到Twig

但是,您仍然可以在控制器中呈现细枝模板,并在ajax调用中返回,然后将其粘贴到所需的位置

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

如果你不喜欢append,那么就使用一个模板引擎,twig就是你目前正在使用的php。这应该会得到更多的喜爱。