使用参数翻译自定义验证器消息

 万承裕常明 发布于 2023-01-20 16:21

我有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关于约束翻译的文档,但这是针对标准验证器而不是自定义验证器.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有