public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $entities = $this->container->getParameter('mawi.autocomplete');
     if (null === $options['entity_alias']) {
         throw new LogicException('You must provide a entity alias "entity_alias" and tune it in config file');
     }
     if (!isset($entities[$options['entity_alias']])) {
         throw new LogicException('There are no entity alias "' . $options['entity_alias'] . '" in your config file');
     }
     $config = $entities[$options['entity_alias']];
     $options['class'] = $config['class'];
     $transformer = new AutocompleteToEntityTransformer($this->container->get('doctrine')->getManager(), $config);
     $transformer->setStripTags(true);
     $builder->add('id', 'hidden');
     $builder->add('label', 'text');
     $builder->addViewTransformer($transformer);
 }
 public function listAction()
 {
     $em = $this->container->get('doctrine')->getManager();
     $request = $this->container->get('request');
     $alias = $request->get('alias');
     $config = $this->getConfig($alias);
     if (false === $this->container->get('security.context')->isGranted($config['role'])) {
         throw new AccessDeniedException();
     }
     $term = $request->get('term');
     $results = $this->container->get($config['service'])->getEntities($term, $config);
     $transformer = new AutocompleteToEntityTransformer($this->container->get('doctrine')->getManager(), $config);
     $res = array();
     foreach ($results as $entity) {
         $res[] = $transformer->transform($entity);
     }
     return new Response(json_encode($res));
 }