CakePHP:当表单没有验证时,表单中的数据如何仍然存在?

使用CakePHP创建表单元素时,如下所示:
echo $this->Form->input('User.first_name');
你从一个空白字段开始。当您输入您的姓名
John
并提交表单时,如果表单未验证,当您返回页面以修复验证错误时,名称
John
仍然存在。这很方便,因为您可以修复错误,而无需重新键入正确的部分。 如何将其作为价值回归? 我需要知道这一点,因为一旦表单成功提交并且您离开页面并返回,表单将再次为空白。 我将名称保存为会话,所以我可以这样做:
$first_name = $this->Session->read('Cart.User.first_name');
echo $this->Form->input('User.first_name',array('value'=>$first_name));
现在,如果您浏览页面并返回,该名称仍将存在,但这会打破原始逻辑,阻止它在表单无法验证时将您键入的内容放回去。 让我给你举个例子。 我正在创建我的名字元素:
$first_name = $this->Session->read('Cart.User.first_name');
echo $this->Form->input('User.first_name',array('value'=>$first_name));
我正确填写表格,然后进入最后的结帐页面。我看到我拼错了我的名字
Jhon
。所以我点击了编辑按钮并返回到表单,因为我在表单中手动设置了
value
,我的数据仍然存在。我正确地将我的名字改为
John
并提交表格。由于某些其他原因,表单没有验证,我被带回到表单,但不是像原来那样显示
John
,它现在再次显示
Jhon
,因为当我手动设置
value
时,我将覆盖默认情况下仍然存在的内容会话。 因此,如果我知道CakePHP在未验证时如何将数据放回到表单中,我可以以相同的方式返回会话数据,而不会覆盖默认值。     
已邀请:
数据在POST数据调用中传递回表单。 FormHelper自动魔术元素使用该数据填充字段的值属性。如果您离开页面,则不会传递帖子信息。 您需要将$ this-data块保存在会话值中,以便在页面之间移动时保留它。     

要回复问题请先登录注册