Symfony表单:保存包含复选框和/或选择小部件的表单


Symfony forms: Save form containing checkboxes and/or choice widgets?

我有一个包含以下字段的Doctrine表:

Article:
  columns:
    title:
      type: string(40)
    content:
      type: string(255)
    publish:
      type: boolean

我正在创建一个自定义表单在我的网站上创建文章。在我的自定义表单中,我有一个publish字段的复选框。在提交表单时,如果复选框被选中,则它的表单值返回为"on"。如果未选中该复选框,则表示表单值不存在。

因为我正在使用扩展Doctrine的模型形式的形式,所以我希望能够在通过有效性时简单地执行$this->form->save();

但是如果publish的复选框只给出on的值或什么都没有,那么这两个值对数据库都无效。表单保存正确,但publish的数据库值始终是默认的,无论复选框是否选中

解决这个问题的正确方法是什么?

另外,您如何处理选择sfWidgets?传递的值是一个值数组。$this->form-save()似乎忽略了这些数组。

您是否必须手动从表单中获取值并从值中创建Doctrine Collection并以这种方式保存它?或者Symfony希望您使用更好的方法?

是否发布sfValidatorBoolean实例的验证器?如果是,它应该返回false。

你关于选择小部件的问题需要更多的阐述。请粘贴您表单的configure方法,您从$form->getValues()接收的值,以及您期望接收的值。