【发布时间】:2012-02-24 16:34:53
【问题描述】:
我正在使用 Symfony2 翻译,以便在我的表单中显示错误消息。我的消息在我的包的Ressources/translations 子文件夹中的validators.fr.yml 中定义。我也在使用注释来设置要使用的消息。
问题是我的模板中没有显示该消息。我只得到我在注释中定义的键。
我的实体的代码示例:
/**
* Nom du site de travail.
*
* @var string le nom du site de travail.
*
* @ORM\Column(
* name = "nom",
* type = "string",
* length = 255
* )
*
* @Assert\NotBlank(message = "structure.siteTravail.nom.notnull")
*/
private $nom;
在我的表单类中,我使用data_class 选项实现了getDefaultOptions 方法(不知道它是否有帮助):
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'My\FreakingBundle\Entity\SiteTravail'
);
}
这里是validators.fr.yml的内容:
structure:
siteTravail:
nom:
notnull: Le nom est obligatoire.
在我的 Twig 模板中,我使用此代码来呈现字段的错误:
{{ form_errors(form.nom) }}
另外,app/config/config.yml 中激活了翻译:
framework:
translator: { fallback: fr }
我的所有翻译都在 messages.fr.yml 中完美运行,我还有另一个使用 messages.fr.yml 和 validators.fr.yml 的包。
最奇怪的是,当我将validators.fr.yml 的内容放入我的另一个包中时,它可以工作。
【问题讨论】:
-
翻译文件仅在已注册的捆绑包中加载。您是否在 AppKernel 中注册了 2 个捆绑包?
-
无论如何,验证器消息被翻译的默认位置在这里:github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/…。你确定你没有覆盖其中一个树枝表单块吗?
标签: php symfony doctrine doctrine-orm twig