代码之家  ›  专栏  ›  技术社区  ›  Dhia Eddine Farah

使用javascript symfony的getRepository

  •  0
  • Dhia Eddine Farah  · 技术社区  · 8 年前

    控制器

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

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

    对于第三个选择列表,它应该与第一个和第二个选择列表一起在函数中调用:它应该显示第四个产品WW,其中“categorie”和“sousCatogries”是在第一步中选择的。所以我认为这应该用javascript来实现,但问题是如何在javascript中获取Repository以获得相应的产品列表,或者是否有其他解决方案可以做到这一点

    谢谢大家

    1 回复  |  直到 8 年前
        1
  •  1
  •   liilo    8 年前

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

    首先在ajax中,只需听select1和select2的更改,然后调用一个新操作,该操作将使用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
            }
            ...
        );
    }
    

    符号方式

    Symfony表单组件提供了一种方法,可以根据事件动态更新表单,请参见此处 Symfony Form Events