Symfony2选择ajax

Symfony2选择ajax,symfony,symfony-2.1,symfony-forms,Symfony,Symfony 2.1,Symfony Forms,目前我还没有找到任何全面的答案。。 我想学习如何根据另一个选择更改选择选项。 如。 类别一对多子类别 我从“类别和子类别选择内容更改”中选择一个选项。 您能帮我一下吗?首先,您需要使用路由url,使用jquery将控件传递给操作 乙二醇 内部控制器 /** * @Route("subcategory/{Id}",name="route_to_retrieve_subcategory" ) * @Template() */ public function ge

目前我还没有找到任何全面的答案。。 我想学习如何根据另一个选择更改选择选项。 如。 类别一对多子类别

我从“类别和子类别选择内容更改”中选择一个选项。
您能帮我一下吗?

首先,您需要使用路由url,使用jquery将控件传递给操作 乙二醇

内部控制器

/**
     * @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

最后,我决定使用这种方法: 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)); 
                });

       });
    });
路线:

route_to_retrieve_subcategory:
pattern: /route_to_retrieve_subcategory
defaults: { _controller: "MyBusinessBundle:ajax:getSubcategory" }
options:
    expose: true
我不喜欢通过课程传递参数,我觉得这没有意义


非常感谢Shurjan shetty的灵感。

感谢您的回复!但剩下的和我一样?我创建一个查询生成的新选择字段?为什么要将Id参数放在路由上?与方法$.ajax的“data”参数的用法不一样吗?仅仅更改select的选项,而不是替换整个select,这不是更好吗?使用参数的一个理由是,可以很容易地在浏览器中测试ajax url,并查看返回的json输出。非常好的解决方案,谢谢。
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