【问题标题】:Custom Validator not loading on Symfony 4自定义验证器未在 Symfony 4 上加载
【发布时间】:2018-10-11 09:01:01
【问题描述】:

我构建了一个自定义验证器,但 Symfony 4 似乎没有加载它。

这是我的自定义验证器:

//Status.php
<?php

namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraint;

/**
 * @Annotation
 */
class Status extends Constraint
{
    /**
     * {@inheritDoc}
     */
    public function getTargets()
    {
        return self::CLASS_CONSTRAINT;
    }
}

自定义验证器

//StatusValidator.php
<?php
namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

/**
 * @Annotation
 */
class StatusValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint)
    {
           // here I straight away adding a violation
            $message = 'Status already exists.';
            $this->context
                ->buildViolation($message)
                ->atPath('status')
                ->addViolation();
    }
}

这里是 yaml

// config/validator/Status.yaml
App\Entity\Status:
    properties:
        status:
            - NotBlank: ~
            - App\Validator\Constraints\StatusValidator: ~

当我提交表单并将状态留空时,表单会在不经过此验证的情况下保存。在文档中,Symfony 4 应该自动装配这些验证。缓存已清除。一样。

【问题讨论】:

    标签: symfony4 customvalidator


    【解决方案1】:

    在 yaml 文件中应该是 Constraint class App\Validator\Constraints\Status 而不是 Validator 类。

    https://symfony.com/doc/current/validation/custom_constraint.html

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2013-11-05
      • 2019-05-14
      • 2018-01-19
      • 1970-01-01
      • 2018-07-28
      • 2014-03-04
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多