gpt4 book ai didi

validation - 如何定义至少需要 2 个字段之一的 Symfony2 表单(无实体)?

转载 作者:行者123 更新时间:2023-12-02 08:32:04 25 4
gpt4 key购买 nike

我有一个包含 2 个字段的搜索表单,未链接到实体。假设它是这样构建的:

$builder
->add('orderNumber', 'text', array('required' => false))
->add('customerNumber', 'text', array('required' => false))
;

我希望用户有义务至少填写两个字段之一。

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

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

最佳答案

感谢@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();
}
}

关于validation - 如何定义至少需要 2 个字段之一的 Symfony2 表单(无实体)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com