Symfony 4 CollectionType 约束 - 字符串数组

我有一个非常简单的字符串数组,存储在数据库中并通过 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 验证。


白衣非少年
浏览 111回答 1
1回答

慕神8447489

如果您只想删除空元素,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/']),    ],  ],    ])
打开App,查看更多内容
随时随地看视频慕课网APP