嵌入式表单跳过验证

Embedded form skipping validation

我有一个与 CreditCards 实体相关的用户实体(一对多),我正在尝试为刚刚注册但尚未注册信用卡的用户编写一个表单。在上述表格中,用户应该填写他们的第一张信用卡的信息。

下面的代码有效,在构建表单时,cvv 文本字段按预期显示“123”。

但是当我去提交表格时,信用卡数据没有被验证,只有用户数据,这是问题所在。

下面是几行相关的代码,如果你需要更多的部分,我会尽力提供缺少的部分。

<?php
// in the controller
$user->addCreditCard(new CreditCard());
// this actually shows up in the form.
$user->getCreditCards()[0]->setCvv(123);
// in the outer form type
$builder->add(
    'credit_card',
    CollectionType::class,
    [
        'type' => CreditCardType::class,
        'property_path' => 'creditCards',
        'entry_options' => [
            //'validation_groups' => ['credit_card'],
            'container' => $container,
            // this is just me being desperate
            'constraints' => [new Assert\Valid(), new Assert\NotBlank()],
        ],
    ]
)
// Inner form type 
// This is extra, just to test if the failure happens at entity level. But this check is ignored.
$builder->add('number', TextType::class, ['constraints' => [new Assert\NotBlank()]]);

问题出在验证组中,我用小写字母 d 拼写了 default。显然他们非常区分大小写。