CakePHP在提交后不会自动填充字段(没有模型)

时间:2013-10-08 20:50:57

标签: php forms tabs cakephp-2.3

情况

我正在处理一个大型表格,这些表格已分成几个标签,既可以对某种字段进行分组,也可以使填充更容易。使用JavaScript(jQuery)激活选项卡,并且整个提交表单(所有选项卡一次提交,即使有空白字段)。

我正在尝试提交hidden字段以及表单以保留用户的当前标签。这样,当提交表单时,将保存数据并且用户返回到之前的相同选项卡。此字段未附加到任何模型,因为它只是帮助

问题+我尝试了什么

当用户切换标签时,正确填充该字段,并随表单一起提交。这就是我所做的:

<?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-activeBriefing.title字段的表单数据,但是在提交后加载表单时,只会使用提交的数据填充“模型”字段,并{{1}带有一个空值。 CakePHP 不会自动填充我的非模型附加字段的值

有什么想法吗?这是一个默认的CakePHP行为还是我可以做些什么让它工作(自动填充)?我对jQuery没有任何问题(已经在几个方面对它进行了测试),真正的问题是在表单提交后填充这个字段。非常感谢任何帮助。

1 个答案:

答案 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'
    )
)