Exemplo n.º 1
0
    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());
        }
    }
Exemplo n.º 2
0
 /**
  * {@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());
     }
 }
Exemplo n.º 3
0
 /**
  * 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;
 }
Exemplo n.º 4
0
 /**
  * @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));
 }
Exemplo n.º 5
0
 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'];
     }
 }