【问题标题】:Symfony2 validation - How to use a value from the form?Symfony2 验证 - 如何使用表单中的值?
【发布时间】:2013-07-11 14:48:40
【问题描述】:

我有一个表格,我必须填写一些信息。 对于表单的其中一个字段,我需要创建一个自定义验证器。 实际上,我需要验证输入的字符串是否采用特定格式,例如 ab.123.cd

我可以通过使用正则表达式来验证这一点,但是“ab”应该等于我表单的另一个字段,所以我需要在我的验证器类中访问这个另一个字段。

这是我的验证器:

public function validate($value, Constraint $constraint)
{       
    preg_match('/[^\/]+/i', $value, $publisherDoiAbbr);
    if($publisherDoiAbbr[0] !== $enquiry->getPublisher()->getDoiAbbreviation()) {
        $this->context->addViolation($constraint->message_publisher_DOI);
    }
    $this->context->addViolation($constraint->message_journal_DOI);
}

我这里需要 $enquiry->getPublisher()->getDoiAbbreviation()

您知道如何在验证器类中访问表单的值吗?

提前谢谢你。

【问题讨论】:

    标签: php validation symfony doctrine-orm


    【解决方案1】:

    您要做的是创建一个“CLASS CONSTRAINT”验证器。

    在此处向下滚动:

    http://symfony.com/doc/current/cookbook/validation/custom_constraint.html

    直到您进入类约束部分以获取示例。

    ================================================ =================

    我不明白“getTargets()”是什么

    将此方法添加到您的约束类(不是验证器类)

    class MyConstraint extends Constraint
    {
        public function getTargets()
        {
            return self::CLASS_CONSTRAINT;
        }
    

    添加后,您的验证器方法将接收一个对象而不是单个值。

    class MyValidator extends ConstraintValidator
    {
        public function validate($value, Constraint $constraint)
        {
            // $value will be an object, adjust your code accordingly
    

    【讨论】:

    • 谢谢@Cerad。恐怕我不明白 Symfony 的例子。有没有真实的例子。目前,我不明白什么是“getTargets()”函数,在哪里实现它以及这个函数应该返回什么。我怎样才能访问我的表单中的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多