【发布时间】: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 应该自动装配这些验证。缓存已清除。一样。
【问题讨论】: