在 Symfony2 中,如何从 FormBuilder 获取标签

Dan*_*ows 2 php formbuilder symfony

在 Symfony2 中,我使用 formbuilder。我正在按照文档在表单中设置标签。

但是,当我在“显示”和“索引”页面上时,我必须将标签复制到 Twig 中。

有没有办法让所有地方都使用相同的标签?我想到的选项:

  • 访问表单构建器配置,但不实际构建表单
  • 有一个中央配置文件,并从 formbuilder 和 twig 文件中查找到该文件

然而,无论哪种方式都需要我“做”一些事情,这是我在 Symfony 中不习惯的。这似乎是已经解决的问题,但我不确定如何解决。

Mun*_*Das 5

您可以利用翻译系统来解决这个问题。确保您已在 中启用翻译config.yml

如果您在表单类型中添加了这样的字段

$builder->add('title', 'text', array(
    'label'=> 'model.title'
));
//.....
Run Code Online (Sandbox Code Playgroud)

messages.en.yml在您的包目录中 创建一个名为的文件Resources/translations(替换en为您的默认语言环境,并根据语言环境创建多个文件。检查本书的翻译章节。)并输入以下内容

#src/YourBundle/Resources/translation/messages.en.yml
model:
    title: "Title"
    field: "Field"
    #....
Run Code Online (Sandbox Code Playgroud)

添加和编辑表单标签将显示Title。在索引和显示页面中您可以执行以下操作

{{ "model.title" | trans([], 'messages') }}
Run Code Online (Sandbox Code Playgroud)

虽然这个过程有点长,但它是一次性的,您可以通过更改翻译文件来更改标签的值。