Validation 如果多个字段为空,则Symfony2 form builder不带类检查
我使用的form builder没有类,有两个字段,每个字段都有约束:Validation 如果多个字段为空,则Symfony2 form builder不带类检查,validation,symfony,constraints,formbuilder,Validation,Symfony,Constraints,Formbuilder,我使用的form builder没有类,有两个字段,每个字段都有约束: $form = $this->createFormBuilder() ->add('name', 'text', array( 'required'=>false, 'constraints'=> new Length(array('min'=>3) )) ->add('dob', 'date'
$form = $this->createFormBuilder()
->add('name', 'text', array(
'required'=>false,
'constraints'=> new Length(array('min'=>3)
))
->add('dob', 'date', array(
'required'=>false,
'constraints'=> new Date()
))
->getForm()
->handleRequest($request);
这很好,但我想检查这两个字段是否都是emtpy,并显示错误。只是似乎无法处理这件事。有人能提供帮助吗 最简单的解决方案是根据需要设置这两个选项 但是。。在邮寄时,你可以简单地
if( empty($form->get('name')->getData()) && empty($form->get('dob')->getData())){
$form->addError(new FormError("fill out both yo"));
// ... return your view
}else {
// ... do your persisting stuff
}
...
symfony的方法可能是添加一个自定义验证器
我建议你特别看看这个
伪:
namespace My\Bundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class CheckBothValidator extends ConstraintValidator
{
public function validate($foo, Constraint $constraint)
{
if (!($foo->getName() && $foo->getDob()) {
$this->context->addViolationAt('both', $constraint->message, array(), null);
}
}
}
最简单的解决方案是根据需要设置这两个参数 但是。。在邮寄时,你可以简单地
if( empty($form->get('name')->getData()) && empty($form->get('dob')->getData())){
$form->addError(new FormError("fill out both yo"));
// ... return your view
}else {
// ... do your persisting stuff
}
...
symfony的方法可能是添加一个自定义验证器
我建议你特别看看这个
伪:
namespace My\Bundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class CheckBothValidator extends ConstraintValidator
{
public function validate($foo, Constraint $constraint)
{
if (!($foo->getName() && $foo->getDob()) {
$this->context->addViolationAt('both', $constraint->message, array(), null);
}
}
}
在
Bundle->Resources->Config
文件夹中创建文件名validation.yml
然后
当您检查提交的表单数据是否有效时,验证将立即生效。
在
Bundle->Resources->Config
文件夹中创建文件名validation.yml
然后
当您检查提交的表单数据是否有效时,验证将立即生效。
do'required'=>true在两个表单字段中。do'required'=>true在两个表单字段中。实际上,我想要的是'required'=>false。如果两个字段都为空,则只需要捕获。非常感谢。它起作用了。我想知道,我是否可以使用验证组或回调来处理这个问题?只是想多学一点…实际上“必需”=>false是我想要的。如果两个字段都为空,则只需要捕获。非常感谢。它起作用了。我想知道,我是否可以使用验证组或回调来处理这个问题?只是想多学点…谢谢。我没有在这上面使用实体。我确实希望在一个字段上允许空白,但在两个字段上都不允许空白。我想知道我是否可以添加到createFromBuilder构造中,以检查两者是否都为空。谢谢。我没有在这上面使用实体。我确实希望在一个字段上允许空白,但在两个字段上都不允许空白。我想知道是否可以添加到createFromBuilder构造中,以检查两者是否都为空。