Tipo de campo repeated

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

Ejemplo de uso

$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.

Rendering

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:

  • Twig
    {{ form_row(form.password) }}
    
  • PHP
    <?php echo $view['form']->row($form['password']) ?>
    

To render each field individually, use something like this:

  • Twig
    {{ form_row(form.password.first) }}
    {{ form_row(form.password.second) }}
    
  • PHP
    <?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.

Validando

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í.

Opciones del campo

type

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.

options

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.

first_options

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'),
));

second_options

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).

first_name

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.

second_name

tipo: string predefinido: second

Al igual que first_name, pero para el segundo campo.

Opciones heredadas

Estas opciones las hereda del tipo field:

invalid_message

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).

invalid_message_parameters

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),
));

error_bubbling

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.

Bifúrcame en GitHub