【问题标题】:Translate custom validator message翻译自定义验证器消息
【发布时间】:2019-02-07 09:26:45
【问题描述】:

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

<?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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-02
    • 2016-01-22
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多