0

我有一个表格,我必须填写一些信息。对于表单的其中一个字段,我需要创建一个自定义验证器。实际上,我需要验证输入的字符串是否采用特定格式,例如 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()

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

先感谢您。

4

1 回答 1

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
于 2013-07-11T16:51:01.733 回答