翻譯自定義驗證消息我有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讀到關於約束轉換的文檔,但是這是標準驗證器而不是自定義的。
在使用自定義的翻譯文件,你可以使用: '$這個 - >上下文> buildViolation($ constraint->消息) - >的setParameter( '%字符串%',$值) - > setTranslationDomain('mydomain') - > addViolation();' – nexana