I've got a form in Symfony2 that's not connected to any entity. It has a child form, of which 1..n instances can be added dynamically on the front-end.
$builder
//car data
->add('cars', 'collection', array(
'label' => ' ',
'type' => new CarLeasingType(),
'allow_add' => true,
'prototype' => true,
))
The parent form has it's validation to validate other fields that are in the form.
public function getDefaultOptions(array $options)
{
$collectionConstraint = new Collection(array(
'fields' => array(
//some fields an their validation
),
'allowExtraFields' => true,
));
return array('validation_constraint' => $collectionConstraint);
}
The child form (of type CarLeasingType) has it's own validation. My problem now has two levels:
- I had to set 'allowExtraFields' to true in parent form validation constraint, otherwise I got a message like
The fields 0, 1 were not expected
- The validation constraint in the child form is not executed at all.
To explain why the cars
fields from the subform are identified as 0
and 1
here is the JavaScript function I use to generate the subform dynamically from the data-prototype
attribute:
function add_dynamic_field(holderId) {
var collectionHolder = $('#' + holderId);
if (0 === collectionHolder.length) return false;
var prototype = collectionHolder.attr('data-prototype');
form = prototype.replace(/<label class=" required">\$\$name\$\$<\/label>/, '');
form = form.replace(/\$\$name\$\$/g, collectionHolder.children().length);
collectionHolder.append(form);
}
How can I validate also each of the subforms added dynamically?