如何定义一个Symfony2表单(没有实体),至少需要2个字段中的一个?

Gre*_*ire 4 validation symfony symfony-2.5

我有一个包含2个字段的搜索表单,没有链接到实体.让我们说它是这样构建的:

$builder
    ->add('orderNumber', 'text', array('required' => false))
    ->add('customerNumber', 'text', array('required' => false))
    ;
Run Code Online (Sandbox Code Playgroud)

我希望用户必须填写两个字段中的至少一个.

使用Symfony 2.5实现这一目标的正确方法是什么?

编辑:可以在不添加数据类的情况下完成吗?

Gre*_*ire 8

感谢@redbirdo的回答,我得到了这段代码:

$builder
    ->add('orderNumber', 'text', array(
        'required' => false,
        'constraints' => new Callback(array($this, 'validate'))
    ))
    ->add('customerNumber', 'text', array('required' => false))
;
Run Code Online (Sandbox Code Playgroud)

验证方法是:

public function validate($value, ExecutionContextInterface $context)
{
    /** @var \Symfony\Component\Form\Form $form */
    $form = $context->getRoot();
    $data = $form->getData();

    if (null === $data['orderNumber'] && null === $data['customerNumber']) {
        $context->buildViolation('Please enter at least an order number or a customer number')
            ->addViolation();
    }
}
Run Code Online (Sandbox Code Playgroud)