gpt4 book ai didi

php - 如何将默认选项与 Symfony 表单中的新选项合并

转载 作者:行者123 更新时间:2023-12-02 20:53:59 24 4
gpt4 key购买 nike

我有一个表单和一个子表单,我想合并定义为默认值的约束值和根表单添加的这些值。

我的子表单:

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 个元素并且回调约束未合并。我试过这个解决方案:Default Options for symfony 2 forms are being overridden not merged但是好像没有调用回调方法

谢谢,科伦廷

最佳答案

在你的父表单类型上尝试这样的事情:

...

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 Assert\Callback(...),
...
]);
});
}

...

关于php - 如何将默认选项与 Symfony 表单中的新选项合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41098923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com