Data binding 仅在未设置对象值时显示默认小部件值(在新模式下)

Data binding 仅在未设置对象值时显示默认小部件值(在新模式下),data-binding,forms,symfony1,Data Binding,Forms,Symfony1,你好,赛姆福尼亚人! 我对表单有一个基本的怀疑,我在下面列出了两个场景 我有一个customModelForm,它扩展了modelForm。 1> 如果我没有为表单字段指定默认值 新建:字段为空 编辑:字段显示对象中的值 2> 如果为字段指定默认值, 新建:字段显示默认值 编辑:字段显示默认值 我试图避免场景2中的编辑模式行为。 仅当未设置对象中的值时,才应显示默认值 我在设置默认值后调用parent::configure。我们对“绑定”事件有控制权吗 首先,在configure()方法中首先调

你好,赛姆福尼亚人! 我对表单有一个基本的怀疑,我在下面列出了两个场景

我有一个customModelForm,它扩展了modelForm。 1> 如果我没有为表单字段指定默认值 新建:字段为空 编辑:字段显示对象中的值 2> 如果为字段指定默认值, 新建:字段显示默认值 编辑:字段显示默认值

我试图避免场景2中的编辑模式行为。 仅当未设置对象中的值时,才应显示默认值

我在设置默认值后调用parent::configure。我们对“绑定”事件有控制权吗


首先,在
configure()
方法中首先调用
parent::configure()
。这样,您就不会冒配置被父配置覆盖的风险

通过在
configure()
方法中执行以下操作,可以根据模型的状态设置默认值:

THIS QUESTION IS NOT ABOUT HOW TO SET DEFAULT VALUE OF A WIDGET

这不应该发生,至少在理论上是这样。发生这种情况的代码部分位于
sformdoctor
中的
updatedfaultsfromobject
中。相关线路为:

if ($this->getObject()->isNew())
{
  // do something here but only if the object is new
}
else
{
  // the object is being edited
}
updateDefaultsFromObject
在完成整个配置链之前不会调用net,因此这里必须进行其他操作

你在使用教义吗?您使用的是Symfony的最新版本吗(不久前这里有一个bug)?您确定在表单的
configure
方法中设置了默认值吗


应避免richsage建议的
isNew
检查。这里有一个更大的问题,因为正确的行为是默认值被现有对象的值覆盖。

谢谢。您认为框架是否应该考虑到这一点?是否有人需要显示默认值,即使在对象中设置了该值?是。我在使用1.2条原则。但我在4月1.4版的Symfony上。我真的需要升级!
if ($this->isNew())
{
  $defaults = $defaults + $this->getObject()->toArray(false);
}
else
{
  $defaults = $this->getObject()->toArray(false) + $defaults;
}