public function buildForm(FormBuilder $builder, array $options) { if (null === $options['property_path']) { $options['property_path'] = $builder->getName(); } if (false === $options['property_path'] || '' === $options['property_path']) { $options['property_path'] = null; } else { $options['property_path'] = new PropertyPath($options['property_path']); } $builder->setRequired($options['required']) ->setReadOnly($options['read_only']) ->setErrorBubbling($options['error_bubbling']) ->setEmptyData($options['empty_data']) ->setAttribute('by_reference', $options['by_reference']) ->setAttribute('property_path', $options['property_path']) ->setAttribute('error_mapping', $options['error_mapping']) ->setAttribute('max_length', $options['max_length']) ->setAttribute('label', $options['label'] ?: $this->humanize($builder->getName())) ->setData($options['data']) ->addValidator(new DefaultValidator()); if ($options['trim']) { $builder->addEventSubscriber(new TrimListener()); } }
/** * {@inheritdoc} */ public function buildForm(FormBuilder $builder, array $options) { if (null === $options['property_path']) { $options['property_path'] = $builder->getName(); } if (false === $options['property_path'] || '' === $options['property_path']) { $options['property_path'] = null; } else { $options['property_path'] = new PropertyPath($options['property_path']); } if (!is_array($options['attr'])) { throw new FormException('The "attr" option must be "array".'); } $builder->setRequired($options['required'])->setDisabled($options['disabled'])->setErrorBubbling($options['error_bubbling'])->setEmptyData($options['empty_data'])->setAttribute('read_only', $options['read_only'])->setAttribute('by_reference', $options['by_reference'])->setAttribute('property_path', $options['property_path'])->setAttribute('error_mapping', $options['error_mapping'])->setAttribute('max_length', $options['max_length'])->setAttribute('pattern', $options['pattern'])->setAttribute('label', $options['label'] ?: $this->humanize($builder->getName()))->setAttribute('attr', $options['attr'] ?: array())->setAttribute('invalid_message', $options['invalid_message'])->setAttribute('invalid_message_parameters', $options['invalid_message_parameters'])->setAttribute('translation_domain', $options['translation_domain'])->setAttribute('virtual', $options['virtual'])->setData($options['data'])->setDataMapper(new PropertyPathMapper($options['data_class']))->addEventSubscriber(new ValidationListener()); if ($options['trim']) { $builder->addEventSubscriber(new TrimListener()); } }
/** * 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) { $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; }
/** * @param \Symfony\Component\Form\FormBuilder $formBuilder * @param bool $prefix */ public function __construct(FormBuilder $formBuilder, $prefix = false) { $this->formBuilder = $formBuilder; $this->prefix = $prefix ? $prefix : $formBuilder->getName(); $this->iterator = new \ArrayIterator(self::getKeys($formBuilder)); }
private function checkFormBuilderDeps(\Symfony\Component\Form\FormBuilder $builder, array &$elements, array &$requirments) { if ($builder->getCompound()) { $type = $builder->getType(); if ($type instanceof \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy) { $type = $type->getInnerType(); } if (!$type instanceof \Symfony\Component\Form\Extension\Core\Type\ChoiceType) { foreach ($builder->all() as $child) { $this->checkFormBuilderDeps($child, $elements, $requirments); } } } $options = $builder->getOptions(); if (isset($options['sf_form_dynamic'])) { foreach ($options['sf_form_dynamic'] as $and) { foreach ($and as $_name => $values) { $requirments[$_name] = true; } } $elements[$builder->getName()] = $options['sf_form_dynamic']; } }