2017-02-23 24 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] .description、data [i] .title ... etc?

私はtwigを使っていて、どうにかして変数データをtwigに渡して必要なビューを作成することができれば素晴らしいと思います。 (ちょうど私がコントローラから小枝に渡された他の変数をレンダリングするのと同じように)

+1

あなたがアペンドを好きではない場合は、テンプレートエンジンを使用し、小枝は、PHPであなたは現在jsと協力しています – madalinivascu

答えて

1

TwigはPHP用のテンプレートエンジンなので、サーバ側です。これは、フロントエンド(JS)からTwigに直接渡すことができないことを意味します。

しかし、あなたはまだあなたのfrondendであなたのコントローラで小枝テンプレートをレンダリングし、AJAX呼び出し中で戻り、あなたがしたい場所貼り付けることができ

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

これはもっと愛を得なければなりません。 –

関連する問題