Validation Symfony断言集合或

Validation Symfony断言集合或,validation,symfony,Validation,Symfony,我有一个Symfony assert集合,其中有两个字段,我需要至少出现这两个字段中的一个,我遇到的问题是,在集合中,除非设置为可选项,否则所有项都是必需的,但除非您提供了字段,否则不会触发可选项中的任何验证。关于如何实现非此即彼或类型验证器,有什么想法吗 谢谢 顺便说一句,我很快就知道了它是如何工作的,但即使指定了验证,required仍然会首先被解雇 new Assert\Collection([ 'html' => [ new Assert\Callback(

我有一个Symfony assert集合,其中有两个字段,我需要至少出现这两个字段中的一个,我遇到的问题是,在集合中,除非设置为可选项,否则所有项都是必需的,但除非您提供了字段,否则不会触发可选项中的任何验证。关于如何实现非此即彼或类型验证器,有什么想法吗

谢谢

顺便说一句,我很快就知道了它是如何工作的,但即使指定了验证,required仍然会首先被解雇

new Assert\Collection([
    'html' => [
        new Assert\Callback([function() {

                $data = $this->getData();

                return isset($data['html']) or isset($data['plain']);
            }])
    ]
    'plain' => [ 
        new Assert\Callback([function() {

                $data = $this->getData();

                return isset($data['html']) or isset($data['plain']);
            }])
    ]
])

当两个中只有一个是真正需要的时,你不能说这两个本身都是需要的。 您必须同时设置这两个选项,然后确保至少设置了一个选项。我强烈建议您为它编写自己的自定义验证


看看这里是怎么做的:

我将如何使用这个新的自定义验证器?我没有实体可以附加它。您打算如何使用Assert\Collection?