У меня есть форма в Symfony2, которая не связана ни с одной сущностью. Он имеет дочернюю форму, из которой экземпляры 1..n могут быть добавлены динамически во внешний интерфейс.
$builder
//car data
->add('cars', 'collection', array(
'label' => ' ',
'type' => new CarLeasingType(),
'allow_add' => true,
'prototype' => true,
))
Родительская форма имеет свою проверку для проверки других полей в форме.
public function getDefaultOptions(array $options)
{
$collectionConstraint = new Collection(array(
'fields' => array(
//some fields an their validation
),
'allowExtraFields' => true,
));
return array('validation_constraint' => $collectionConstraint);
}
Дочерняя форма (типа CarLeasingType) имеет собственную проверку. Моя проблема теперь имеет два уровня:
- Я должен был установить для параметра allowExtraFields значение true в ограничении проверки родительской формы, в противном случае я получил сообщение типа
The fields 0, 1 were not expected
- Ограничение проверки в дочерней форме вообще не выполняется.
Чтобы объяснить, почему поля cars
из подчиненной формы обозначены как 0
и 1
, вот функция JavaScript, которую я использую для динамического генерирования подчиненной формы из атрибута data-prototype
:
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);
}
Как проверить также каждую динамически добавляемую подчиненную форму?