如何将 Twig 过滤器应用于 form_label(form.name),例如“大写”?

fre*_*717 4 symfony twig

我的问题只是在表单中应用 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 过滤器。非常感谢帮助,谢谢。

fre*_*717 5

我刚刚找到了解决方案。这太容易了,令人尴尬。我以为我不需要 |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)