Ejemplo n.º 1
0
 /**
  * @param FormBuilderInterface $builder
  * @param string $name
  * @param string $group
  */
 private function addModelDataListener(FormBuilderInterface $builder, $name, $group)
 {
     $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($builder, $name, $group) {
         try {
             $data = $this->propertyAccessor->getValue($event->getData(), $name);
         } catch (\RuntimeException $exception) {
             $data = null;
         }
         if (null === $data || !is_object($data)) {
             return;
         }
         $formName = $this->dynamicFormsChildrenMap->getFormNameByGroupAndDataClass($group, get_class($data));
         $options = $event->getForm()->get($name)->get('_form')->getConfig()->getOptions();
         $event->getForm()->get($name)->add('_form', 'choice', array_merge($options, ['data' => $formName]));
         $this->addEmbeddedFormField($builder->get($name), $event->getForm()->get($name), $formName);
     });
 }