我正在处理一个大型表格,这些表格已分成几个标签,既可以对某种字段进行分组,也可以使填充更容易。使用JavaScript(jQuery)激活选项卡,并且整个提交表单(所有选项卡一次提交,即使有空白字段)。
我正在尝试提交hidden
字段以及表单以保留用户的当前标签。这样,当提交表单时,将保存数据并且用户返回到之前的相同选项卡。此字段未附加到任何模型,因为它只是帮助。
当用户切换标签时,jquery正确填充该字段,并随表单一起提交。这就是我所做的:
<?php
echo $this->Form->create('Briefing', array('enctype' => 'multipart/form-data'));
// This is my aux field, which is populated via jQuery as user switch tabs
echo $this->Form->hidden('tab-active', array('name' => 'tab-active', 'id' => 'tab-active'));
echo $this->Form->input('title');
echo $this->Form->submit('Save', array('class' => 'btn btn-success'));
echo $this->Form->end();
?>
让我们假设用户在“Tab#4”时提交了表单。当我在debug($this->data);
BriefingsController
时,这就是我得到的:
/app/Controller/BriefingsController.php (line 133)
array(
'tab-active' => 'tab-4',
'Briefing' => array(
'title' => 'My test title'
)
)
因此,我的Controller会收到tab-active
和Briefing.title
字段的表单数据,但是在提交后加载表单时,只会使用提交的数据填充“模型”字段,并{{1}带有一个空值。 CakePHP 不会自动填充我的非模型附加字段的值。
有什么想法吗?这是一个默认的CakePHP行为还是我可以做些什么让它工作(自动填充)?我对jQuery没有任何问题(已经在几个方面对它进行了测试),真正的问题是在表单提交后填充这个字段。非常感谢任何帮助。
答案 0 :(得分:1)
CakePHP使用表单模型的数据填充表单。因此,如果您为“简报”创建创建表单,CakePHP将查看$ this-&gt; data ['Briefing']数组,并填充与此数组中存在的字段匹配的输入。因此,当“简报”表单创建中存在隐藏的“tab-active”字段时,CakePHP希望您的“Briefing”模型具有“tab-active”属性。
所以我的猜测是你的$ this-&gt;数据数组应该是:
array(
'Briefing' => array(
'tab-active' => 'tab-4',
'title' => 'My test title'
)
)