我有symfony2自定义验证器的定义:
// Nip.php use Symfony\Component\Validator\Constraint; /** * @Annotation */ class Nip extends Constraint { public $message = 'This value %string% is not a valid NIP number'; //...
这是验证码:
// NipValidator.php use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; class NipValidator extends ConstraintValidator { public function validate($value, Constraint $constraint) { $stringValue = (string) $value; $nip = preg_replace('/[ -]/im', '', $stringValue); $length = strlen($nip); if ($length != 10) { $this->context->addViolation( $constraint->message, array('%string%' => $value) ); return; } //...
和我的翻译文件:
// validators.pl.yml validator.nip: %string% to nie jest poprawny nip
服务定义:
// services.yml services: validator.nip: class: BundlePath\Validator\Constraints\NipValidator tags: - { name: validator.constraint_validator, alias: validator.nip }
我试图用'validator.nip'替换$ constraint-> message但是这只显示'validator.nip'作为字符串,并且它没有解析为已翻译的消息.
CustomValidator运行良好,唯一的问题是启用翻译.我已经阅读了symfony.com关于约束翻译的文档,但这是针对标准验证器而不是自定义验证器.