Symfony2 Form ChoiceType [单选按钮]



我在这里有一个快速的问题,因为我无法弄清楚我是否做错了什么Symfony2 Forms或者组件无法始终如一地工作。场景如下:

  • 我有一个带有自定义表单类型 [ChoiceType"子"类型] 的表单,其中包含一些预定义的值
  • 我需要此自定义表单类型在之前未选择任何值时选择默认值 [因此表单尚未提交]
  • 再说一次,我也可能根据用户的设置 [首选项] 预填充此表单

我期望发生的事情:

  1. 无用户首选项 - 表单域具有默认值 [0]
  2. 用户首选项可用 - 表单字段具有传入$data参数 [0-7] 的值
  3. 表单正在提交 - 表单域的值是已提交的表单 [0-7]

实际发生的情况:

  • 如果表单字段设置为选择['expanded' => false]则它对显示(选择第一个值 [0] - 可能是因为它是第一个值)和提交(正在提交 0)都按预期工作
  • 如果表单字段是单选按钮列表['expanded' => true]则不会选择任何值作为开头,并且提交表单也不会提交任何值。

有人可以解释我如何选择单选按钮吗?如果没有提交,我可以使用empty_data来设置值,但是初始表单显示呢?根据empty_value进行选择(对于选择框和单选按钮)将是完美的。

我也不能使用data选项,因为它会覆盖传递到表单的任何数据(请参阅上面的第 2 点)以及提交的数据。

@EDIT

我想避免两件事:

  • 使用 JavaScript 绝对不是一种选择
  • 覆盖模板也是我想避免的事情,主要是因为我目前正在使用引导主题作为基础,稍后将被适当的前端/模板取代

我不确定是否理解您的问题。 要管理表单默认值,只需设置映射对象的属性。

例如:

$formObject->child->attributeDefault = "defaultValue";
if($hasPreference) {
$formObject->child->attribute1 = "preferenceDefautlValue"
}
$form = $this->createForm(new YourFormType(), $formObject);
$form->handleRequest($request) //overide default value by submitted one

最新更新