我想使用回调验证器和/或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
,但未执行validate
和isPasswordLegal
。为什么?验证已启用。
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