如何使用AbstractType Form在symfony中创建一个自动完成的文本字段


How to create a auto complete text field in symfony with AbstractType Form?

我正试图用AbstractType Form在symfony中创建一个自动完成的文本字段,它从数据库中获取数据,我希望它能为我输入的任何内容提供建议,我已经尝试了几个第三方插件,但不起作用,可能是我错过了一些安装过程。这是我使用的git插件的链接在完成了完整的安装步骤之后,它给了我纯文本字段。是否有任何其他方式来创建自动完成文本框,这是我的FormType 代码

 $builder->add('autoText', 'autocomplete', array(
     'class' => 'MyBundle:Demo',
 ));

myhtml.titch模板:

<div class="col-md-10">
    [{% for auto in results -%}
        {{ {id: auto.id, label: auto.name, value: auto.name}|json_encode|raw }}
        {%- if not loop.last %},{% endif -%}
    {%- endfor %}]
</div>
<!-- js -->
{% javascripts
    'js/jquery.js'
    'js/jquery-ui.js'
    '@PUGXAutocompleterBundle/Resources/public/js/autocompleter-jqueryui.js'
%}
{% endjavascripts %}
{% javascripts %}
    <script type="text/javascript">
        $('#autoText').autocompleter({url_list: '/auto_search', url_get: '/auto_get/'});
    </script>
{% endjavascripts %}

myDemoController

Public class DemoController extends Controller{
//....
    public function searchAutoAction(Request $request) {
        $q = $request->get('AutoText');
        $em = $this->getDoctrine()->getManager();
        $results = $em->getRepository('MyBundle:Demo')->findLikeName($q);
        return array('results' => $results);
    }
    public function getAutoAction($id) {
        $em = $this->getDoctrine()->getManager();
        $auto = $em->getRepository('MyBundle:Demo')->find($id);
        return new Response($auto->getName());
    }
.....//
}

路由.yml

auto_search:
    path: /auto_search/
    defaults: { _controller:MyBundle:Demo:searchAuto }
auto_get:
    path: /auto_get/
    defaults: { _controller:MyBundle:Demo:getAuto }

阅读此文档页面,并添加如下js库:

{% javascripts
    'js/jquery.js'
    'js/jquery-ui.js'
    '@PUGXAutocompleterBundle/Resources/public/js/autocompleter-jqueryui.js'
%}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}