2017-09-07 10 views
0

私はSymfony 2.8を使用しています。私は3つの選択リストを持っています。それが必要第三選択リストについてgetRepository with javascript symfony

Contoller

$em=$this->getDoctrine()->getManager(); 
$categories = $em->getRepository('CentralBundle:Categorie')->findAll(); 
$sousCategories = $em->getRepository('CentralBundle:SousCategorie')->findAll(); 

return $this->render('product.html.twig',array('categories'=>$categories, 
                     'sousCategories' => $sousCategories)); 

TWIG

<ul class="nav nav-pills nav-stacked category-menu"> 
<select id="select-cat" class="form-control" name="carlist"> 
    {% for cat in categories %} 
    <option value="{{cat.id}}">{{cat.nom}}<option> 
    {% endfor %} 
    </select> 
</ul> 

<ul class="nav nav-pills nav-stacked category-menu"> 
<select id="select-sc" class="form-control" name="carlist"> 
    {% for sc in sousCategories %} 
    <option value="{{sc.id}}">{{sc.nom}}<option> 
    {% endfor %} 
    </select> 
</ul> 

:第一及び第二の選択肢は、このようなコントローラにリポジトリから呼び出され1番目と2番目の選択リストで関数として呼び出すことができます。最初のステップで選択された "categorie"と "sousCatogries"を持つ商品を表示する必要があります。だから私はそれがJavaScriptでやるべきだと思うが、問題は、私は、対応する製品のリストを取得するにはJavaScriptでgetRepositoryことができる方法である、またはすべての

答えて

0

あなたのための

おかげでそれをするために他の解決策が存在する場合AJAXでのそれは2つの方法

AJAX

まず行うことができ、ちょうどSELECT1に耳を傾け、SELECT2の変更は、その後、JSON形式で結果を返すSELECT1とSELECT2の値を使用してデータベースを照会する新しいアクションを呼び出します

$('.select1').change(function() { 
    populateSelect3(); 
}); 
$('.select2').change(function() { 
    populateSelect3(); 
}); 

function populateSelect3() { 
    $.ajax({ 
     url : 'myurl', 
     type: 'post', 
     data : {'select1': $('.select1').val(), 'select2': $('.select2').val() }, 
     success: function(data) { 
      // populate your select3 
     } 
     ... 
    ); 
} 

SYMFONICの道

symfonyのフォームコンポーネントを動的フォームは、イベントへの感謝を更新するための方法を提供し、ここを参照してくださいSymfony Form Events

カスタムフォームを作成する必要があります...

+0

ありがとうございます。私はそれをやろうとします。 –

+0

Symfonyフォームイベントの場合、event-> getData()は常にNULLです.JavaScriptの問題では、クエリビルダーを渡す方法が問題になります。 –