【问题标题】:How to create a auto complete text field in symfony with AbstractType Form?如何使用 AbstractType Form 在 symfony 中创建一个自动完成的文本字段?
【发布时间】:2015-09-20 23:22:44
【问题描述】:

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

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

我的 html.twig 模板:

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

我的DemoController

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());
    }

.....//
}

route.yml

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

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

【问题讨论】:

  • 您是否从页面源中检查过创建的表单输入 id 是否与您在 javascript 中使用的匹配? IE。 id 实际上是 'autoText'...
  • 是的,我已经从我的页面源中检查过了,id是一样的,
  • 我也试过 '{{ form_row(form.autoText) }}' 在 html 上渲染,结果在两种情况下都是一样的
  • @TusharPurohit 你收到什么结果?浏览器控制台显示什么?
  • 您的 auto_get 路由是否应该与您在此处可见的函数定义相匹配? auto_get 正在使用 getAutoAction 而您已经定义了 getFormulaAction ...如果控制台没有显示任何内容,那么网络活动如何?当您在文本字段中键入内容时,您能看到是否有任何 jquery 调用?

标签: php git symfony doctrine-orm autocomplete


【解决方案1】:

阅读此doc page,并添加如下 js 库:

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

【讨论】:

  • 好的,我已经为 jqury 和 jquery-ui 添加了资产路径,但结果仍然相同。它只是一个文本字段。
  • 是的,我已经阅读了文档,并且按照那里的说明使用了所有资产。
  • @TusharPurohit 是否包含库?可以查看html源代码吗?
  • @TusharPurohit 如果一切正常,控制器操作也正常,但代码仍然无法正常工作,可能是浏览器控制台出现了一些错误?可以贴一下生成的表单html代码吗?
猜你喜欢
  • 2016-06-08
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 2018-11-02
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多