Symfony 4 CollectionType Constraints - массив строк - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть очень простой массив строк, который хранится в базе данных и предоставляется через 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] и ['']

Если я могу понять, что я делаю неправильно, я хотел бы добавить Проверка регулярного выражения также для каждого элемента.

1 Ответ

1 голос
/ 17 апреля 2020

Если вы просто хотите удалить пустые элементы, delete_empty должны сделать трюк, и вы можете удалить NotBlank.

Чтобы применить дополнительную проверку к элементам, вы необходимо передать ограничение на коллекцию item , а не на саму коллекцию, используя entry_options:

->add('keywords', CollectionType::class, [
  'allow_add' => true,
  'delete_empty' => true,
  'constraints' => [
    new Count(['min' => 1]),
  ],
  'entry_options' => [
    'constraints' => [
      new Regex(['pattern' => '/whateverpattern/']),
    ],
  ],    
])
...