其他分享
首页 > 其他分享> > 的Symfony形式不遵守默认设置

的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