Table of Contents
Questions & Feedback
Found a typo or an error?
Want to improve this document? Edit it.
Need support or have a technical question?
Post to the user mailing-list.
Master Symfony2 fundamentals
Symfony hosting done right
Discover the SensioLabs Support
repeated Field Type
repeated Field Type¶
This is a special field "group", that creates two identical fields whose values must match (or a validation error is thrown). The most common use is when you need the user to repeat his or her password or email to verify accuracy.
| Rendered as | input text field by default, but see type option |
| Options | |
| Overridden Options | |
| Inherited options | |
| Parent type | field |
| Class | RepeatedType |
Example Usage¶
1 2 3 4 5 | $builder->add('password', 'repeated', array(
'type' => 'password',
'invalid_message' => 'The password fields must match.',
'options' => array('label' => 'Password'),
));
|
Upon a successful form submit, the value entered into both of the "password"
fields becomes the data of the password key. In other words, even though
two fields are actually rendered, the end data from the form is just the
single value (usually a string) that you need.
The most important option is type, which can be any field type and determines
the actual type of the two underlying fields. The options option is passed
to each of those individual fields, meaning - in this example - any option
supported by the password type can be passed in this array.
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
1
{{ form_row(form.password) }}
- PHP
1
<?php echo $view['form']->row($form['password']) ?>
To render each field individually, use something like this:
- Twig
1 2 3
{{ form_errors(form.password) }} {{ form_row(form.password.first) }} {{ form_row(form.password.second) }}
- PHP
1 2 3
<?php echo $view['form']->errors($form['password']) ?> <?php echo $view['form']->row($form['password']['first']) ?> <?php echo $view['form']->row($form['password']['second']) ?>
Note
The sub-field names are first and second by default, but can
be controlled via the first_name and second_name options.
Validation¶
One of the key features of the repeated field is internal validation
(you don't need to do anything to set this up) that forces the two fields
to have a matching value. If the two fields don't match, an error will be
shown to the user.
The invalid_message is used to customize the error that will
be displayed when the two fields do not match each other.
Field Options¶
type¶
type: string default: text
The two underlying fields will be of this field type. For example, passing
a type of password will render two password fields.
options¶
type: array default: array()
This options array will be passed to each of the two underlying fields. In
other words, these are the options that customize the individual field types.
For example, if the type option is set to password, this array might
contain the options always_empty or required - both options that are
supported by the password field type.
first_name¶
type: string default: first
This is the actual field name to be used for the first field. This is mostly
meaningless, however, as the actual data entered into both of the fields will
be available under the key assigned to the repeated field itself (e.g.
password). However, if you don't specify a label, this field name is used
to "guess" the label for you.
Inherited options¶
These options inherit from the field type:
invalid_message¶
type: string default: This value is not valid
This is the validation error message that's used if the data entered into this field doesn't make sense (i.e. fails validation).
This might happen, for example, if the user enters a nonsense string into
a time field that cannot be converted
into a real time or if the user enters a string (e.g. apple) into a
number field.
Normal (business logic) validation (such as when setting a minimum length for a field) should be set using validation messages with your validation rules (reference).
invalid_message_parameters¶
type: array default: array()
When setting the invalid_message option, you may need to
include some variables in the string. This can be done by adding placeholders
to that option and including the variables in this option:
1 2 3 4 5 | $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),
));
|





is a trademark of Fabien Potencier. All rights reserved.