使用javascript symfony的getRepository

时间:2017-09-07 08:05:04

标签: javascript php jquery ajax symfony

我使用Symfony 2.8,我有3个选择列表。第一个和第二个的选项从控制器中的存储库调用,如下所示:

位指示

$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>

对于第3个选择列表,它应该在第1和第2个选择列表的函数中调用:它应该显示产品wwith&#34; categorie&#34;和&#34; sousCatogries&#34;谁在第一步中被选中。所以我认为这应该是用javascript做的,但问题是如何在javascript中使用getRepository来获取相应的产品列表,或者是否有其他解决方案来做到这一点

感谢所有

1 个答案:

答案 0 :(得分:1)

你可以用两种方式做到这一点

<强> AJAX

首先在ajax中,只需监听select1并选择2更改然后调用一个新操作,该操作将使用select1和select2值查询数据库,然后以JSON格式返回结果

$('.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

您必须创建自定义表单...