public function buildForm(FormBuilder $builder, array $options) { if (!isset($options['currency'])) { throw new \InvalidArgumentException(sprintf('The option "currency" must be given for form type "%s".', $this->getName())); } if (!isset($options['amount'])) { throw new \InvalidArgumentException(sprintf('The option "amount" must be given for form type "%s".', $this->getName())); } $allowAllMethods = !isset($options['allowed_methods']); $options['available_methods'] = array(); foreach ($this->paymentMethods as $method) { if (!$allowAllMethods && !in_array($method, $options['allowed_methods'], true)) { continue; } $options['available_methods'][] = $method; } if (!$options['available_methods']) { throw new \RuntimeException(sprintf('You have not selected any payment methods. Available methods: "%s"', implode(', ', $this->paymentMethods))); } $builder->add('method', 'choice', array('choices' => $this->buildChoices($options['available_methods']), 'expanded' => true)); foreach ($options['available_methods'] as $method) { $methodOptions = isset($options['method_options'][$method]) ? $options['method_options'] : array(); $builder->add('data_' . $method, $method, $methodOptions); } $self = $this; $builder->addValidator(new CallbackValidator(function ($form) use($self, $options) { $self->validate($form, $options); })); $builder->appendNormTransformer(new CallbackTransformer(function ($data) use($self, $options) { return $self->transform($data, $options); }, function ($data) use($self, $options) { return $self->reverseTransform($data, $options); })); }
public function buildForm(FormBuilder $builder, array $options) { $builder->add('nombre')->add('descripcion')->add('condiciones')->add('foto', 'file', array('required' => false))->add('precio', 'money')->add('descuento', 'money')->add('umbral'); // El formulario es diferente según se utilice en la acción 'new' o en la acción 'edit' // Para determinar en qué acción estamos, se comprueba si el atributo `id` del objeto // es null, en cuyo caso estamos en la acción 'new' // // La acción `new` muestra un checkbox que no corresponde a ninguna propiedad de la entidad // del modelo. Se añade dinámicamente y se indica que no es parte del modelo (con la propiedad // `property_path`). // // También se añade dinámicamente un validador para comprobar que el checkbox añadido ha sido // activado y para mostrar un mensaje de error en caso contrario. if (null == $options['data']->getId()) { $builder->add('acepto', 'checkbox', array('property_path' => false)); $builder->addValidator(new CallbackValidator(function (FormInterface $form) { if ($form["acepto"]->getData() == false) { $form->addError(new FormError('Debes aceptar las condiciones indicadas antes de poder añadir una nueva oferta')); } })); } }
/** * {@inheritdoc} */ public function buildForm(FormBuilder $builder, array $options) { $this->captcha->setOptions($options); $builder->addValidator(new CaptchaValidator($this->captcha))->setAttribute('captcha', $this->captcha)->setAttribute('format', $options['format'])->setAttribute('position', $options['position']); }
public function buildForm(FormBuilder $builder, array $options) { $this->key = $builder->getForm()->getName(); $builder->addValidator(new CaptchaValidator($this->session, $this->key)); }
/** * {@inheritdoc} */ public function buildForm(FormBuilder $builder, array $options) { $options = $this->getDefaultOptions($options); $builder->addValidator($this->validator)->setAttribute('option_validator', $options['validator'])->setAttribute('configs', $options['configs']); }