我的问题只是在表单中应用 Twig 过滤器而不会出现 500 服务器错误。这是代码,它在视图“Room/new.html.twig”中:
{{ form_label(form.name) }}
Run Code Online (Sandbox Code Playgroud)
或者
{{ form_label(form.name, 'room.name') }}
Run Code Online (Sandbox Code Playgroud)
两者都将输出:'nom de salle'(法语中的'房间名称')。那是因为,在我的翻译文件“messages.fr.yml”中,我有:
room.name: "nom de salle"
Run Code Online (Sandbox Code Playgroud)
此外,我使用以下代码在我的表单类型“RoomType.php”中激活了翻译:
->add('name', 'text', array(
'label' => 'room.name'
Run Code Online (Sandbox Code Playgroud)
))
我尝试了所有我想到的与 |capitalize 的可能组合,结果要么出现 500 服务器错误,要么根本没有变化。一些例子:
{{ form_label(form.name)|capitalize }}
{{ form_label(form.name, 'room.name'|capitalize) }}
Run Code Online (Sandbox Code Playgroud)
还有更多……
有谁知道怎么做,它似乎不在 Symfony 文档中。当然,我考虑过将翻译复制为小写字母和大写字母开头的翻译,但这会破坏对象。此外,我还想与此 form_label() 函数一起使用其他 Twig 过滤器。非常感谢帮助,谢谢。
我刚刚找到了解决方案。这太容易了,令人尴尬。我以为我不需要 |trans,因为它已经被翻译了,但如果没有它,'room.name' = 'nom de salle' 将转换为 'Room.name' 而不是 'Nom de salle'。所以正确的代码只是:
{{ form_label(form.name, 'room.name'|trans|capitalize) }}
Run Code Online (Sandbox Code Playgroud)