4

現時点で包括的な答えは見つかりませんでした..別の選択の選択に基づいて選択オプションを変更する方法を学びたいと思います。例えば。カテゴリ1対多のサブカテゴリ

カテゴリとサブカテゴリからオプションを選択して、コンテンツの変更を選択します。手を貸してくれませんか。

4

2 に答える 2

3

まず、ルーティングURLを使用して、jqueryを使用してコントロールをアクションに渡す必要があります。

              $('# category id').change(function(){
                 var Id =  $('#category id').val();          
                 var url = Routing.generate('route_to_retrieve_subcategory', { 'Id': Id  });

                $.post(url, 
                { 'Id': Id  
                },function(data){
                  $('#subcategoryId').html(data);
                 },"text");
            }
        });

コントローラー内

/**
     * @Route("subcategory/{Id}",name="route_to_retrieve_subcategory" )
     * @Template()
     */
    public function getSubcategoryAction($Id)
    {
          //code
         return new Response($subcategoryList, 200);


    }

注:ルートはrouting.ymlファイルにリストされている必要があります

route_to_retrieve_subcategory:
    pattern: /route_to_retrieve_subcategory/{Id}
    defaults: {_controller: YourBundle:YourController:getSubcategory}
    options:
        expose: true
于 2013-02-12T07:35:58.897 に答える
2

結局、私はこのメソッドを使用することにしました:javascript:

$('select[name*="[category][category]"]').prop('selected', true).change(function(){
             var Id =  $(this).val();          
             var url = Routing.generate('route_to_retrieve_subcategory');

            $.post(url, 
            { 'idCat': Id  
            }, function(results){
                var sub = $('select[name*="[category][category]"]').parent().find('select[name*="[subCategory][]"]');
                sub.empty();
                $.each(results , function(key, value) { 
                    sub
                    .append($("<option></option>")
                    .attr("value",value.id)
                    .text(value.subCategory)); 
                });

       });
    });

コントローラ:

public function getSubcategoryAction(Request $request)
{
      $Id = $request->get('idCat');
      $em = $this->getDoctrine()->getManager();
      $entities = $em->getRepository('MyBusinessBundle:SubCategories')->findSubCategories($Id);
      $output = array();
      foreach ($entities as $member) {
          $output[] = array(
              'id' => $member->getId(),
              'subCategory' => $member->getSubCategory(),
          );
      }

      $response = new Response();
      $response->headers->set('Content-Type', 'application/json');
      $response->setContent(json_encode($output));
      return $response;
}

ルート:

route_to_retrieve_subcategory:
pattern: /route_to_retrieve_subcategory
defaults: { _controller: "MyBusinessBundle:ajax:getSubcategory" }
options:
    expose: true

コースにパラメータを渡さない方が好きです。意味がないと感じています。

インスピレーションを与えてくれたshrujanshettyに大いに感謝します。

于 2013-02-12T23:31:53.283 に答える