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
,或者重写该方法