2017-02-23 2 views
1

In Symfony 3 habe ich eine Art und ich benutze Ajax, um die Objekte aus dem Back-End zu bekommen. DieseAusgabe Objekte von Ajax zu Zweig

ist in der Steuerung:

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); 

ich das Objekt in Frontend erhalten:

$('#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) 
     } 
    }) 
    } 
}); 

Die Frage ist: Gibt es eine bessere Möglichkeit, die Objekte zu machen, als mit einer Schleife und das Hinzufügen von Daten [i] .Beschreibung, Daten [i] .title ... etc?

Ich bin mit Zweig und es wäre toll, wenn ich irgendwie die variablen Daten an Zweig übergeben kann, um die Ansicht zu erstellen, die ich brauche. (Genau wie ich jede andere Variable von Controller zu Zweig übertragen)

+1

Verwendung einer Template-Engine, wenn Sie nicht die append mögen, ist Zweig php Sie arbeiten gerade mit js – madalinivascu

Antwort

1

Twig ist Template-Engine für PHP, so ist es serverseitig. Es bedeutet, dass Sie nicht direkt etwas von Ihrem Frontend (JS) an Twig übergeben können.

Aber man kann noch Zweig Vorlage in Ihrem Controller und zurück in in Ajax-Aufruf machen, und fügen Sie, wo Sie in Ihrer frondend wollen

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

Dies sollte mehr Liebe bekommen. –