我有一个表单和一个子形式,我想合并定义为默认值的约束值,而这些约束值由root表单添加。
我的子形式:
class DatesPeriodType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('start', DateType::class, [
'constraints' => [
new Date(),
]
])
->add('end', DateType::class, [
'constraints' => [
new Date(),
]
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefault('error_bubbling', false)
->setDefault('constraints', [
new Callback([$this, 'validate']),
])
;
}
}
我将我的表格添加到根部,并带有新约束选项:
$builder
->add('judgmentPeriod', DatesPeriodType::class, [
'constraints' => [
new Valid(),
new Callback([
'callback' => [$this, 'datesAreEmpty'],
'groups' => ['insertionPeriod'],
]),
new Callback([
'callback' => [$this, 'validDates'],
'groups' => ['judgmentPeriod'],
]),
]
])
正如预期的那样,约束选项现在包含3个元素,并且不合并回调约束。我尝试了此解决方案:Symfony 2表格的默认选项不被覆盖,而是合并的,但似乎未称为
。谢谢,科伦丁
在您的父级表单上尝试这样的事情:
...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setNormalizer('constraints', function (Options $options, $value) {
// Merge the child constraints with the these, the parent constraints
return array_merge($value, [
new AssertCallback(...),
...
]);
});
}
...