使用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在未验证时如何将数据放回到表单中,我可以以相同的方式恢复会话数据,而不会覆盖默认值。
答案 0 :(得分:2)
数据在POST数据调用中传回表单。 FormHelper自动魔术元素使用该数据填充字段的值属性。如果您离开页面,则不会传递帖子信息。
您需要将$ this-data块保存在会话值中,以便在页面之间移动时保留它。