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