Symfony 3/原则2:为什么我的验证器跳过


Symfony 3 / Doctrine 2: Why my validator skipped?

我想使用回调验证器和/或getter,但在简单实体中跳过了所有这些:

AppBundle/Entity/Page.php:

public static function loadValidatorMetadata(ClassMetadata $metadata)
{      
    $metadata->addConstraint(new Assert'Callback('validate'));
     $metadata->addGetterConstraint('passwordLegal', new Assert'IsTrue(array(
        'message' => 'The password cannot match your first name',
    )));
}
public static function validate($object, ExecutionContextInterface $context)
{
    die('validate');
}
public function isPasswordLegal()
{
    die('isPasswordLegal');
}   

执行了loadValidatorMetadata,但未执行validateisPasswordLegal。为什么?验证已启用。

config.yml:

validation:      { enabled: true, enable_annotations: true }

我试过验证。yml:

AppBundle'Entity'Page:
constraints:
    - Callback: [validate]

谢谢。

我发现自己有一个工作代码:

 public static function loadValidatorMetadata(ClassMetadata $metadata)
{
    $callback = function ($object, ExecutionContextInterface $context) {
       $context->buildViolation($object->getTemplate().' sounds totally fake!')
        //->atPath('template')  //Global or Field error
        ->addViolation();
    };
    $metadata->addConstraint(new Assert'Callback($callback));
}

将其放入实体中:Yourbundle/Entity/EntityName.php