如何在Symfony3中创建自动完成字段?

时间:2017-10-04 11:46:37

标签: php jquery symfony autocomplete

我想在TextType表单中使用自动填充功能。

我正在使用Symfony 3.

我需要使用哪种捆绑包?

我试过:

  • ShtumiUsefulBundle(需要Symfony2)
  • samson / autocomplete-bundle(需要Symfony2)
  • IoFormBundle(已弃用)
  • PUGXAutocompleterBundle(典型的用例是当你得到多对一的关系时)

更新

我正在尝试 tetranz / select2entity-bundle

在我的控制器中:

/**
 * Lists all region entities.
 *
 * @Route("/candidat/listeRegion", name="get_liste_region")
 * @Method("GET")
 */
public function getListeRegionAction()
{
    $em = $this->getDoctrine()->getManager();
    $regions = $em->getRepository('GECandidatBundle:Region')->findAll();

    $list_region = array();
    foreach ($regions as $region){
        $obj['id'] = $region->getId();
        $obj['text'] = $region->getNom();
        array_push($list_region,$obj);
    }
    return new JsonResponse($list_region);
}

JsonResponse返回一个对象数组:

  

[{ “ID”:1, “文本”: “REGION1”},{ “ID”:2 “文本”: “区域2”},{ “ID”:3 “文本”: “区3” }]

在我的buildForm中:

$builder
        ->add('lieuxTravailSouhaites', Select2EntityType::class, [
            'label' => 'Lieux travail souhaites *',
            'label_attr' => [
                "class" => "smaller lighter blue",
                "style" => "font-size: 21px;",
            ],

            'multiple' => true,
            'remote_route' => 'get_liste_region',
            'class' => 'GECandidatBundle:Region',
            'primary_key' => 'id',
            'text_property' => 'name',
            'minimum_input_length' => 2,
            'page_limit' => 10,
            'allow_clear' => true,
            'delay' => 250,
            'cache' => true,
            'cache_timeout' => 60000, // if 'cache' is true
            'language' => 'fr',
            'placeholder' => 'Sélectionnez un lieu',
            // 'object_manager' => $objectManager, // inject a custom object / entity manager
        ])

当我输入两个字母时,它不会显示确切的字词。即使我写完整个单词也没有选择它,它也无法正常工作。

我检查了我导入的jquery:

<script src="{{ asset('assets/vendor/jquery/jquery-3.2.1.min.js') }}"></script>

在浏览器控制台中我收到此错误:

  

spinners.js:21 Uncaught TypeError:$(...)。selected不是函数       在HTMLDocument。 (spinners.js:21)       在j(jquery.min.js:2)       at Object.fireWith [as resolveWith](jquery.min.js:2)       在Function.ready(jquery.min.js:2)       在HTMLDocument.J(jquery.min.js:2)

我该怎么做?

0 个答案:

没有答案