Symfony 注释翻译消息中的占位符

Placeholder in Symfony annotation translation message

我正在使用带有注释和断言的 Symfony 在表单中进行一些验证检查。使用以下注释,我正在检查字段是否为空:

@Assert\NotBlank(message="not_blank")

这生成了一条使用正确语言的消息,这种情况:

The field cannot be empty

现在我想将字段名称添加为占位符,这样我就不需要为每个字段制作单独的消息。所以像:

@Assert\NotBlank(message="not_blank {{ name=email }}")

   <trans-unit id="1">
    <source>not_blank</source>
    <target>This {{ name }} field cannot be empty</target>
  </trans-unit>

在翻译文件中它将是:

然后我可以输出:

The email field cannot be empty

如果可能的话,我不需要为每个字段单独发送消息,例如:姓名、电子邮件、街道等。

打开@Assert\NotBlank可以看到:

class NotBlank extends Constraint
{
    public $message = 'This value should not be blank.';
}

所以你不能以其他方式使用它,但你可以通过扩展基本约束来创建自定义约束 class Constraint

Tutorial