tengo un campo password
forma (no asignada a User
contraseña) para ser utilizado en un formulario de cambio de contraseña, junto con otros dos campos (mapeadas), first
y last
.¿Cómo agregar validadores sobre la marcha en Symfony2?
Tengo que agregar validadores sobre la marcha: si el valor para la contraseña está en blanco, entonces no debe haber validación. De lo contrario, se deben agregar MinLength
y MaxLength
validadores.
Esto es lo que he hecho hasta ahora: crear el password
campo repetido, añadir un CallbackValidator
y return
si es $form->getData()
null
.
Entonces, ¿cómo puedo agregar validadores de longitud mínima y máxima a $ campo?
$builder = $this->createFormBuilder($user);
$field = $builder->create('new_password', 'repeated', array(
'type' => 'password',
'first_name' => 'Password',
'second_name' => 'Confirm password',
'required' => false,
'property_path' => false // Not mapped to the entity password
));
// Add a callback validator the the password field
$field->addValidator(new Form\CallbackValidator(function($form) {
$data = $form->getData();
if(is_null($data)) return; // Field is blank
// Here password is provided and match confirm, check min = 3 max = 10
}));
// Add fields to the form
$form = $builder
->add('first', 'text', array('required' => false)) // Mapped
->add('last', 'text', array('required' => false)) // Mapped
->add($field) // Not mapped
->getForm();
Sólo tiene que añadir: use Symfony \ Component \ Form \ CallbackValidator; para soltar el prefijo del formulario. Los espacios de nombres PHP funcionan bien, pero no están orientados a "paquetes" como java. Lo mejor es que tiene una declaración de uso para cada clase utilizada. – Cerad
Desafortunadamente, recibo: 'Llamada al método indefinido Symfony \ Component \ Form \ FormBuilder :: addValidator' cuando llamo' $ builder-> get ('contraseña') -> addValidator (...) ' – Athlan