Symfony2验证 - 如何使用表单中的值?

时间:2013-07-11 14:48:40

标签: php validation symfony doctrine-orm

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

我可以使用regexp来验证这一点,但是“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()

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

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您要做的是制作一个“CLASS CONSTRAINT”验证器。

向下滚动:

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

直到你到达类约束部分为例。

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

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

将此方法添加到Constraint类(而不是验证程序类)

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