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