gpt4 book ai didi

Symfony2 自定义最小年龄验证器 - Twig 中没有显示错误消息?

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

我有一个最小年龄自定义验证器,它足够简单:

约束(Minage.php)

namespace MyCompany\VisitBundle\Component\Validator\Constraints;
use Symfony\Component\Validator\Constraint;

/**
* @Annotation
*/
class Minage extends Constraint
{
public $message = 'The user must be {{ age }} or over';
public $age = 18;

public function validatedBy()
{
return get_class($this).'Validator';
}
}

验证器 (MinageValidator.php)
namespace MyCompany\VisitBundle\Component\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class MinageValidator extends ConstraintValidator
{
public function isValid($value, Constraint $constraint)
{
$minAge = strtotime(sprintf("-%s YEAR", $constraint->age));
if(strtotime($value->format("Y-m-d")) > $minAge)
{
$this->setMessage($constraint->message,
array('{{ age }}' => $constraint->age));
return false;
}
return true;
}
}

在我的实体中(剥离不重要的部分)
use MyCompany\VisitBundle\Component\Validator\Constraints as MyCompanyAssert;

/**
* @ORM\Column(name="birth_date", type="datetime")
* @MyCompanyAssert\Minage(age="18")
*/
private $birth_date;

在 Twig 上:
{{ form_errors(form.birth_date) }}
{{ form_widget(form.birth_date) }}

我确定验证器返回 false 但我的表单拒绝显示错误消息所有其他验证器(开箱即用而非自定义)工作正常并显示各自的错误。任何的想法?

翻译被禁用,因此它不会在文件中寻找翻译。

提前致谢。

更新:form_errors(form.birth_date)不起作用,但 form_errors(form)做?为什么它被指定为全局表单错误?

最佳答案

这种行为的原因是错误冒泡。设置字段的 error_bubbling选项 false .

关于Symfony2 自定义最小年龄验证器 - Twig 中没有显示错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032066/

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