public setParent ( Symfony\Component\Form\FormBuilderInterface $parent = null ) | ||
$parent | Symfony\Component\Form\FormBuilderInterface |
/** * {@inheritdoc} */ public function createBuilder(FormFactoryInterface $factory, $name, array $options = array(), FormBuilderInterface $parent = null) { $options = $this->getOptionsResolver()->resolve($options); // Should be decoupled from the specific option at some point $dataClass = isset($options['data_class']) ? $options['data_class'] : null; $builder = new FormBuilder($name, $dataClass, new EventDispatcher(), $factory, $options); $builder->setType($this); $builder->setParent($parent); $this->buildForm($builder, $options); return $builder; }
public function testGetFormConfigErasesReferences() { $builder = new FormBuilder('name', null, $this->dispatcher, $this->factory); $builder->setParent(new FormBuilder('parent', null, $this->dispatcher, $this->factory)); $builder->add(new FormBuilder('child', null, $this->dispatcher, $this->factory)); $config = $builder->getFormConfig(); $reflClass = new \ReflectionClass($config); $factory = $reflClass->getProperty('factory'); $parent = $reflClass->getProperty('parent'); $children = $reflClass->getProperty('children'); $unresolvedChildren = $reflClass->getProperty('unresolvedChildren'); $factory->setAccessible(true); $parent->setAccessible(true); $children->setAccessible(true); $unresolvedChildren->setAccessible(true); $this->assertNull($factory->getValue($config)); $this->assertNull($parent->getValue($config)); $this->assertEmpty($children->getValue($config)); $this->assertEmpty($unresolvedChildren->getValue($config)); }
/** * Adds a new field to this group. A field must have a unique name within * the group. Otherwise the existing field is overwritten. * * If you add a nested group, this group should also be represented in the * object hierarchy. * * @param string|FormBuilder $child * @param string|FormTypeInterface $type * @param array $options * * @return FormBuilder The current builder */ public function add($child, $type = null, array $options = array()) { if ($child instanceof self) { $child->setParent($this); $this->children[$child->getName()] = $child; return $this; } if (!is_string($child)) { throw new UnexpectedTypeException($child, 'string or Symfony\\Component\\Form\\FormBuilder'); } if (null !== $type && !is_string($type) && !$type instanceof FormTypeInterface) { throw new UnexpectedTypeException($type, 'string or Symfony\\Component\\Form\\FormTypeInterface'); } if ($this->currentLoadingType && ($type instanceof FormTypeInterface ? $type->getName() : $type) == $this->currentLoadingType) { throw new CircularReferenceException(is_string($type) ? $this->getFormFactory()->getType($type) : $type); } $this->children[$child] = array('type' => $type, 'options' => $options); return $this; }