繁体   English   中英

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

[英]Symfony2 validation - How to use a value from the form?

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

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

先感谢您。

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

向下滚动到这里:

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

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

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

我不明白什么是“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM