【发布时间】:2012-03-14 20:16:39
【问题描述】:
我有一个非常简单的表单,其中包含一些来自学说模型的字段。
$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'对应于数据库中Field的主键(字符串)的实际值。
如果我这样做
$this->getDefault('fields');
我完全恢复了我之前输入的内容。
然而,symfony 没有输出任何选中的复选框。我什至尝试删除选择小部件的“扩展”和“多个”选项,因此我得到一个简单的 SELECT 框,并且只提供一个默认值。
为其他小部件(文本输入、选择等)设置默认值。
顺便说一句;场模型是 i18n。不知道这在这里是否重要,因为存储/检索都按预期工作。
还有;通过 include_partial() 将表单呈现为另一个表单的一部分。这能破坏什么吗?在“父”表单类中:
$this->embedRelation('TheRelationThatBugsMe');
然后在 _form.php 中为'父':
include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe']));
有没有人知道我可能在哪里出错了,或者至少可以给我一些关于我应该从哪里开始挖掘的指示?
[更新]
如果我以“fields2”形式创建一个新字段(该字段在数据库中不作为字段存在)并使用完全相同的代码来创建小部件、验证器并设置默认值,那么默认值正确呈现。为什么为映射到数据库中列的字段设置默认值不起作用?
【问题讨论】:
标签: php symfony1 doctrine symfony-1.4