2
我有一個Symfony2中沒有連接到任何實體的表單。它有一個子表單,其中1..n個實例可以在前端動態添加。驗證未連接到Symfony 2中的實體的子表單
$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);
}
我如何可以驗證也每個子表單動態添加?