的Symfony形式不遵守默认设置
作者:互联网
我有一个非常简单的表格,其中包含了理论模型中的某些字段.
$this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array(
'model' => 'FieldModel',
'expanded' => true,
'multiple' => true,));
$this->validatorSchema['fields'] = new sfValidatorDoctrineChoice(array(
'model' => 'FieldModel',
'multiple' => true,));
这些字段在表单中显示为复选框,我可以检查并正确保存.此“字段”字段将转换为json结构,并以文本形式保存到数据库.到现在为止还挺好.
注意:字段“字段”作为TEXT存储在数据库中,但是用户应该能够从复选框列表中选择值.
当我想默认选中某些复选框时,就会出现问题.
我试着做:
$this->setDefault('fields', array('key1','key2','key3'));
其中“ keyX”对应于数据库中Field的主键(字符串)的实际值.
如果我做一个
$this->getDefault('fields');
我得到的正是我以前输入的内容.
但是,symfony不会输出任何已选中的复选框.我什至尝试将“展开”和“多个”选项都删除到选择小部件中,所以我得到一个简单的“选择”框,仅提供一个值作为默认选择.
设置其他小部件(文本输入,选择等)的默认值是可行的.
顺便说一句;字段模型为i18n.不知道这是否重要,因为存储/检索均按预期进行.
也;该表单通过include_partial()呈现为另一种表单的一部分.那会破坏吗?在“父级”表单类中:
$this->embedRelation('TheRelationThatBugsMe');
然后在_form.php中作为“父母”:
include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe']));
有谁知道我可能在哪里出错了,或者至少可以给我一些有关我应该从哪里开始挖掘的指导?
[更新]
如果我以“ fields2”的形式创建一个新字段(该字段在数据库中不存在),并使用完全相同的代码来创建小部件,验证器并设置默认值,则默认值将正确呈现.为映射到数据库中列的字段设置默认值怎么办?
解决方法:
如果在sfDoctrineForm中调用updateDefaultFromObject之前调用setDefault,则如果对象存在,则对象的值将覆盖表单默认值. updateDefaultsFromObject包含相关逻辑.您稍后必须调用setDefault或重写该方法.
标签:symfony-1-4,doctrine,symfony1,php 来源: https://codeday.me/bug/20191201/2082683.html