我有一个非常简单的字符串数组,存储在数据库中,并通过API提供。
使用Symfony的表单类型,我添加了对各种数据位的验证。
我遇到了一个CollectionType
,它本质上是一个字符串数组,例如:
['key', 'words', 'are', 'the', 'best']
带有表单代码:
->add('keywords', CollectionType::class, [
'allow_add' => true,
'constraints' => [
new Count(['min' => 1]),
new NotBlank(['allowNull' => false])
]
])
这允许以下内容通过限制:
[null]
和['']
如果我能弄清楚我做错了什么,我想把Regex验证也添加到每个元素中。
如果你只想删除空元素,delete_empty
应该做到这一点,你可以删除NotBlank
。
要对元素应用额外的验证,必须使用entry_options
:将约束传递给集合项,而不是集合本身
->add('keywords', CollectionType::class, [
'allow_add' => true,
'delete_empty' => true,
'constraints' => [
new Count(['min' => 1]),
],
'entry_options' => [
'constraints' => [
new Regex(['pattern' => '/whateverpattern/']),
],
],
])