I have a very simple array of strings being stored in a database and provided via an API.
Using Symfony’s form types I’m adding validation for various bits of data.
I’ve hit a wall with a CollectionType
that is essentially an array of strings, for example:
['key', 'words', 'are', 'the', 'best']
With the form code:
JavaScript
x
->add('keywords', CollectionType::class, [
'allow_add' => true,
'constraints' => [
new Count(['min' => 1]),
new NotBlank(['allowNull' => false])
]
])
This is allowing the following to pass the constraints:
[null]
and ['']
If I can figure out what I’m doing wrong I’d like to add Regex validation to each element as well.
Advertisement
Answer
If you just want to remove empty elements, delete_empty
should do the trick and you could remove NotBlank
.
To apply additional validation to the elements, you’ll have to pass the constraint to the collection item, not to the collection itself, by using entry_options
:
JavaScript
->add('keywords', CollectionType::class, [
'allow_add' => true,
'delete_empty' => true,
'constraints' => [
new Count(['min' => 1]),
],
'entry_options' => [
'constraints' => [
new Regex(['pattern' => '/whateverpattern/']),
],
],
])