ioalessio / autosuggestbundle
Symfony2 Form 的自动建议小部件
此软件包的规范仓库似乎已丢失,因此已冻结此软件包。
dev-master
2015-01-30 12:27 UTC
Requires
- php: >=5.3.0
- symfony/framework-bundle: >=2.1
This package is not auto-updated.
Last update: 2024-01-20 11:17:20 UTC
README
在您的 composer.json 中添加 IoAutosuggestBundle
{ "require": { "ioalessio/autosuggestbundle": "dev-master" } }
现在运行以下命令让 composer 下载软件包
$ php composer.phar update
Composer 将将软件包安装到您的项目目录 vendor/ioalessio。
步骤 2: 启用软件包
在内核中启用软件包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Io\AutosuggestBundle\IoAutosuggestBundle(), ); }
步骤 3: 配置软件包
在您的页面中添加 JavaScript 文件(您也可以将其放在页面末尾)
- libs/boostrap/bootstrap-typehead.js
- bundles/ioautosuggest/twitter-bootstrap-typeahead.js #this file extends original twitter bootstrap typehead file
- bundles/ioautosuggest/autosuggest.js
重要:bootstrap-typehead.js 可以在此处下载:http://twitter.github.com/bootstrap/javascript.html#typeahead
在您的表单模板文件中添加小部件代码
{# fields.html.twig #} {% extends 'form_div_layout.html.twig' %} {% block autosuggest_selector_widget %} {% spaceless %} {{ form_widget(form.autosuggest, { 'attr' : { 'class': 'ajax-typeahead ', 'data-value': form.value.vars['id'], 'data-link' : form.vars['attr']['url'] } } ) }} {{ form_widget(form.value) }} {{ form_rest(form) }} {% endspaceless %} {% endblock autosuggest_selector_widget %}
步骤 3: 在表单中包含小部件
#FORM CLASS public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->add('field', 'autosuggest_selector', array( 'entityName' => 'Acme\DemoBundle\Entity\MyEntity', 'autocompleteMethod' => 'autocomplete', 'valueMethod' => 'id', 'route' => 'autosuggest_typehead' )); ... } #AUTOCOMPLETE CONTROLLER /** * @Route("/autosuggest.{_format}", name="autosuggest_typehead", defaults={"_format"="json"}) */ public function autosuggestAction() { $query = $this->getRequest()->get('query'); $data = $this->getDoctrine()->getEntityManager()->createQuery("SELECT e.id, e.name AS name FROM AcmeDemoBundle:MyEntity e WHERE e.name LIKE :query") ->setParameter('query', "%".$query."%") ->getArrayResult(); // array must countain 'id' and 'name' $response = new Response(json_encode($data)); return $response; }