antqa / ajax-autocomplete-bundle
Ajax AutoComplete Bundle
Installs: 1 530
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.4.0
- doctrine/orm: ~2.2,>=2.2.3
- symfony/form: ~2.3|~3.0
- symfony/framework-bundle: ~2.3|~3.0
Requires (Dev)
- symfony/yaml: ~2.3|~3.0
This package is auto-updated.
Last update: 2024-12-18 01:39:49 UTC
README
Install
AntQaAjaxAutoCompleteBundle is installed using Composer.
$ php composer.phar require piotrantosik/ajax-autocomplete-bundle
Enable bundle
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new AntQa\AjaxAutoCompleteBundle\AntQaAjaxAutoCompleteBundle(), ); }
Example usage
Quick usage with select2 3.x (documentation):
$('input').select2({ multiple: true, minimumInputLength: 2, ajax: { url: '/find', dataType: 'json', data: function (term) { return { q: term }; }, results: function (data) { return { results: data }; } }, formatResult: function(object) { return object.name; }, formatSelection: function(object) { return object.name; }, initSelection: function(element, callback) { var ids=$(element).val(); if (ids !== '') { $.ajax('/get/' + ids, { dataType: 'json' }).done(function(data) { callback(data); }); } } });
Example routes:
find_objects: pattern: /find defaults: { _controller: Acme:Default:find } condition: "request.headers.get('X-Requested-With') matches '/XmlHttpRequest/i'" options: expose: true get_objects: pattern: /get/{ids} defaults: { _controller: Acme:Default:get } options: expose: true
Example controllers action:
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\JsonResponse; use Doctrine\ORM\Query\Expr; public function findAction(Request $request) { $expr = new Expr(); $objects = $this->getManager() ->getRepository('Acme:Object') ->createQueryBuilder('o') ->select('o.name, o.id') ->where($expr->like('o.name', ':name')) ->setParameter('name', sprintf('%s%%', $request->query->get('q', ''))) ->getQuery() ->getArrayResult(); return new JsonResponse($objects); } public function get($ids) { $expr = new Expr(); $ids = explode(',', $ids); $objects = $this->getManager() ->getRepository('Acme:Object') ->createQueryBuilder('o') ->select('o.id, o.name') ->where($expr->in('o.id', ':ids')) ->setParameter('ids', $ids) ->getQuery() ->getArrayResult(); return new JsonResponse($objects); }