Symfony 5 表单与其 Twig 模板之间的数据丢失

Data loss between Symfony 5 form and its Twig template

在查看了文档和论坛但没有任何成功后,我忍不住询问一些关于为什么我的表单和它的模板之间丢失数据的建议。

让我解释一下: 我有一个带有字段的表单,可以正确呈现,正确获取它们的数据(或空数据),除了一个: 我有一个 ChoiceType 字段,它通过 Doctrine 从数据库中获取它的选择。在这一点上,一切都很好,我在一个漂亮的数组中得到了我的选择,如下所示:

$choices => array:2 [▼
  "YES" => 0
  "NO" => 1
]

但是当我在字段中添加这些选项并要求 Twig 渲染它时,一些数据丢失了。当我查看 Twig 呈现的选项时,它看起来像这样:

 "choices" => array:2 [▼
      0 => Symfony\Component\Form\ChoiceList\View\ChoiceView {#7158 ▼
        +label: "0"
        +value: "0"
        +data: 0
        +attr: []
        +labelTranslationParameters: []
      }
      1 => Symfony\Component\Form\ChoiceList\View\ChoiceView {#7159 ▼
        +label: "1"
        +value: "1"
        +data: 1
        +attr: []
        +labelTranslationParameters: []
      }
    ]

我的问题是:为什么我丢失了我的标签,而 Symfony 按我的意愿发送了它们?

如果您需要有关我如何创建表单、如何在我的控制器中处理它或如何在 Twig 中呈现它的任何其他信息,请告诉我,我很乐意编辑 post。

请注意,我目前使用的是 Symfony 5.3.5 和 PHP 8.0.9

编辑

在我的应用程序中,我使用了具有相同 ChoiceType 字段的其他表单,使用相同的方法来获取选项,但渲染结果符合预期。我将它们从创建和数据检索到渲染进行了比较,一切都是相似的(预计该领域的选项很少)。 这就是我不明白我的烦恼

事实上,我使用 choice_label 选项加上具有标签=>值的选择是使标签“覆盖”自己并最终“删除”它们,将标签默认为值本身. 从 FormType 中删除选项“choice_label”更正了所有内容。

抱歉回答晚了,我没有看到@gp_flower发表的评论,如果需要,我会在下一篇文章中尝试自己回答。