Este es un campo «grupo» especial, el cual crea dos campos idénticos, cuyos valores deben coincidir (o lanza un error de validación). Se utiliza comúnmente cuando necesitas que el usuario repita su contraseña o correo electrónico para verificar su exactitud.
Dibujado como | campo input text por omisión, pero ve la opción type |
Opciones | |
Opciones heredadas | |
Tipo del padre | field |
Clase | Symfony\Component\Form\Extension\Core\Type\RepeatedType |
$builder->add('password', 'repeated', array(
'type' => 'password',
'invalid_message' => 'The password fields must match.',
'options' => array('attr' => array('class' => 'password-field')),
'required' => true,
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat Password'),
));
Al presentar satisfactoriamente un formulario, el valor ingresado en ambos campos «contraseña» se convierte en los datos de la clave password. En otras palabras, a pesar de que ambos campos efectivamente son reproducidos, sólo el dato final del formulario es el único valor que necesitas (generalmente una cadena).
La opción más importante es type, la cual puede ser cualquier tipo de campo y determina el tipo real de los dos campos subyacentes. La opción options se pasa a cada uno de los campos individuales, lo cual significa —en este ejemplo— que en este arreglo puedes pasar cualquier opción compatible con el tipo password.
The repeated field type is actually two underlying fields, which you can render all at once, or individually. To render all at once, use something like:
{{ form_row(form.password) }}
<?php echo $view['form']->row($form['password']) ?>
To render each field individually, use something like this:
{{ form_row(form.password.first) }}
{{ form_row(form.password.second) }}
<?php echo $view['form']->row($form['password']['first']) ?>
<?php echo $view['form']->row($form['password']['second']) ?>
Nota
The sub-field names are first and second by default, but can be controlled via the first_name and second_name options.
Una de las características clave del campo repeated es la validación interna (sin necesidad de hacer nada para configurar esto) el cual obliga a que los dos campos tengan un valor coincidente. Si los dos campos no coinciden, se mostrará un error al usuario.
El invalid_message se utiliza para personalizar el error que se mostrará cuando los dos campos no coinciden entre sí.
tipo: string predefinido: text
Los dos campos subyacentes serán de este tipo de campo. Por ejemplo, pasando un tipo de password reproducirá dos campos de contraseña.
tipo: array predeterminado: array()
Este arreglo de opciones se pasará a cada uno de los dos campos subyacentes. En otras palabras, estas son las opciones que personalizan los tipos de campo individualmente. Por ejemplo, si la opción type se establece en password, este arreglo puede contener las opciones always_empty o required — ambas opciones son compatibles con el tipo de campo password.
tipo: array predeterminado: array()
Nuevo en la versión 2.1: La opción first_options es nueva en Symfony 2.1.
Las opciones adicionales (se fusionarán en opciones arriba) estas sólo se deben suministrar para el primer campo. Estas son útiles especialmente para personalizar la etiqueta:
$builder->add('password', 'repeated', array(
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat Password'),
));
tipo: array predeterminado: array()
Nuevo en la versión 2.1: La opción second_options es nueva en Symfony 2.1.
Las opciones adicionales (se fusionarán en opciones arriba) estas sólo se deben suministrar para el segundo campo. Estas son útiles especialmente para personalizar la etiqueta (ve las first_options).
tipo: string predefinido: first
Este es el nombre real del campo que se utilizará para el primer campo. Esto sobre todo no tiene sentido, sin embargo, puesto que los datos reales especificados en ambos campos disponibles bajo la clave asignada al campo repeated en sí mismo (por ejemplo, password). Sin embargo, si no especificas una etiqueta, se utiliza el nombre de este campo para «deducir» la etiqueta por ti.
Estas opciones las hereda del tipo field:
tipo: string predefinido: This value is not valid (Este valor no es válido)
Este es el mensaje para el error de validación utilizado cuando se determina que los datos ingresados en este campo no tienen sentido (es decir, falla la validación).
Esto puede ocurrir, por ejemplo, si el usuario introduce una cadena sin sentido en el campo time que no se puede convertir a una hora real o si el usuario introduce una cadena (por ejemplo, manzana) en un campo de número.
La validación (con la lógica del negocio) normal (por ejemplo, al establecer una longitud mínima en un campo) la debes establecer usando mensajes de validación con tus reglas de validación (referencia).
tipo: array predeterminado: array()
Al establecer la opción invalid_message, posiblemente sea necesario que incluyas algunas variables en la cadena. Esto se puede lograr agregando marcadores de posición y variables en esa opción:
$builder->add('some_field', 'some_type', array(
// ...
'invalid_message' => 'You entered an invalid value - it should include %num% letters',
'invalid_message_parameters' => array('%num%' => 6),
));
tipo: Boolean predeterminado: false
Si es true, los errores de este campo serán pasados al campo padre o al formulario. Por ejemplo, si estableces en true un campo normal, cualquier error de ese campo se adjuntará al formulario principal, no al campo específico.