2

我正在为一个项目使用 Symfony 1.3.x。

在我的一种形式的 configure() 方法中,我有以下代码:

'terms' => new sfWidgetFormInputCheckbox(array('value_attribute_value'=>'terms', 'default' => false )),

这个想法是向用户显示一个复选框(默认未选中),用户必须在表单验证之前检查它。

问题是当我显示表单时,复选框总是已经选中(即选中) - 这违背了使用复选框强制用户确认的目的。

有谁知道如何解决这个问题?

4

3 回答 3

3

Symfony 中的默认表单值本质上具有未记录的层次结构。它是(数字越大优先级越高):

  1. 小部件的默认值。
  2. 如果表单用于新记录,则记录的值。
  3. 小部件的表单级别默认值(是的,小部件和表单可以跟踪单独的默认值)。
  4. 如果表单用于现有记录,则为记录的值。

我的猜测是 2、3 或 4 之一正在取代您的小部件级默认值。请注意, 3. 取代 4. 当 set default 在调用后sfFormDoctrine调用时updateDefaultsFromObject

于 2010-11-11T14:03:48.977 回答
2
$this->setDefault("is_tested", false);  // unchecked checkbox
于 2011-01-17T19:31:46.073 回答
2

更多例子

$this->widgetSchema['listing_status'] = new sfWidgetFormInputCheckbox(array(),array('value'=>1));
$this->setDefault('listing_status',1);
于 2011-05-04T10:55:25.840 回答