嵌入式表单跳过验证
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。显然他们非常区分大小写。
我有一个与 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。显然他们非常区分大小写。