首页 > 解决方案 > 翻译自定义验证器消息

问题描述

我正在尝试翻译自定义约束消息:

<?php

namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Translation\TranslatorInterface;

/**
 * @Annotation
 */
class YoutubeLink extends Constraint
{
    public $message = '"{{ string }}" is not a valid Youtube link';

    /**
     * @var TranslatorInterface
     */
    private $translator;

    public function __construct($translator)
    {
        $this->translator = $translator;
    }
}

我正在注入翻译器:

services:
    App\Validator\Constraints\YoutubeLink:
        arguments: [ "@translator" ]
        tags:
            - { name: validator.constraint_validator, alias: validator.youtube_link }

但是现在如何用参数翻译消息?

标签: symfony

解决方案


只需将翻译密钥放入实体中,因为$message它是公开的:

/**
 * @var string
 *
 * @ORM\Column(type="string")
 * @AppAssert\YoutubeLink(
 *     message = "link.invalid_youtube"
 * )
 */
protected $url;

推荐阅读