Php Symfony表单不遵守设置默认值

Php Symfony表单不遵守设置默认值,php,symfony1,doctrine,symfony-1.4,Php,Symfony1,Doctrine,Symfony 1.4,我有一个非常简单的表单,其中包含了一个条令模型中的一些字段 $this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array( 'model' => 'FieldModel', 'expanded' => true, 'multiple' => true,)); $this->validatorSchema['fields'] = new

我有一个非常简单的表单,其中包含了一个条令模型中的一些字段

$this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array(
  'model'          => 'FieldModel',
  'expanded'       => true,
  'multiple'       => true,));

$this->validatorSchema['fields'] = new sfValidatorDoctrineChoice(array(
  'model'    => 'FieldModel',
  'multiple' => true,));
这些字段以复选框的形式呈现在表单中,我能够正确地进行检查和保存。此“字段”-字段转换为json结构,并作为文本保存到数据库中。到目前为止还不错

注意:“字段”作为文本存储在数据库中,但是用户应该能够从复选框列表中选择值

当我希望在默认情况下选中一些复选框时,就会出现问题

我试着做:

$this->setDefault('fields', array('key1','key2','key3'));
其中“keyX”对应于数据库中字段的主键(字符串)的实际值

如果我做一个

$this->getDefault('fields');
我得到的正是我以前放进去的东西

但是,symfony没有输出任何选中的复选框。我甚至尝试删除choice小部件的“扩展”和“多个”选项,因此我得到了一个简单的选择框,并且只提供一个值作为默认选择

为其他小部件(文本输入、选项等)设置默认值是可行的

顺便说一句;场模型为i18n。不知道这在这里是否重要,因为存储/检索都按预期工作

还有,;该表单通过include_partial()作为另一表单的一部分呈现。那会破坏什么吗?在“父”窗体类中:

$this->embedRelation('TheRelationThatBugsMe');
然后在“parent”的_form.php中:

include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe']));
有没有人知道我哪里出了问题,或者至少可以给我一些关于我应该从哪里开始挖掘的建议

[更新]


如果我以“fields2”的形式创建一个新字段(在数据库中不作为字段存在),并使用完全相同的代码创建小部件、验证器和设置默认值,那么默认值将正确呈现。为映射到数据库列的字段设置默认值怎么不起作用?

如果在
sfDoctrineForm
中调用
updateDefaultFromObject
之前调用
setDefault
,则如果对象存在,则对象的值将覆盖表单默认值
updateDefaultsFromObject
包含相关逻辑。您必须稍后调用
setDefault
,或者重写该方法