【发布时间】:2022-01-28 09:57:59
【问题描述】:
2 个月前我们将项目升级到 Symfony 4.4.35,现在我注意到一个奇怪的行为。当我使用具有以下配置的 ChoiceType 时,表单返回错误(此值无效):
$builder->add('items', ChoiceType::class, [
'required' => FALSE,
'multiple' => TRUE,
]);
$builder->get('items')->resetViewTransformers();
帖子:
form[items][0]: "val1"
form[items][1]: "val2"
谁能告诉我发生了什么变化?我试图检查 ChoiceType.php,并找出 problem is here:
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use (&$unknownValues, $messageTemplate) {
if (\count($unknownValues) > 0) {
// here is append error to form
}
});
问题是:如何创建具有可变长度和自定义值的多选?
【问题讨论】:
-
如何为该字段配置有效值?
-
有一个对象包含带有 getter/setter 的 (private $items) 属性。没有特殊验证...在配置选项“data_class”中提到了对象。
-
您说的是映射数据。我的问题是关于表单字段:什么是有效值以及它们是如何在表单中配置的?正如您在源代码中找到的:
// Throw exception if unknown values were submitted(第 174 行) -
如你所见,有一个叫做resetViewTransformers(值可以是各种)。就我而言,它是一个字符串数组。用户可以添加任意数量的字符串进行多选。
标签: php symfony symfony-forms