感谢@redbirdo 的回答,我得到了以下代码:
$builder
->add('orderNumber', 'text', array(
'required' => false,
'constraints' => new Callback(array($this, 'validate'))
))
->add('customerNumber', 'text', array('required' => false))
;
验证方法是:
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();
}
}