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实现这一目标的正确方法是什么?
编辑:可以在不添加数据类的情况下完成吗?
感谢@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)
| 归档时间: |
|
| 查看次数: |
3010 次 |
| 最近记录: |