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


CakePHP does not auto-populate a field (that has no Model) after submission

情况

我正在处理一个大表单,该表单已拆分为多个选项卡,既可以对某种字段进行分组,又可以使填充更容易。选项卡使用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(); 
?>

假设用户在"选项卡#4"处提交了表单。当我debug($this->data);我的BriefingsController时,这就是我得到的:

/app/Controller/BriefingsController.php (line 133)
array(
    'tab-active' => 'tab-4',
    'Briefing' => array(
        'title' => 'My test title'
    )
)

因此,我的控制器接收tab-activeBriefing.title字段的表单数据,但是当提交后加载表单时,只有模型字段填充了提交的数据,并且tab-active带有空值。CakePHP 不会自动填充我的非模型附加字段的值

对此有什么想法吗?这是默认的 CakePHP 行为,还是我可以做些什么来使其工作(自动填充(?我对jQuery没有问题(已经以多种方式对其进行了测试(,真正的问题是在表单提交后重新填充此字段。任何帮助都非常感谢。

CakePHP 用表单模型的数据填充表单。因此,如果您为"简报"创建创建一个表单,CakePHP 将查看$this->data['简报'] 数组,并填充与此数组中存在的字段匹配的输入。因此,由于隐藏的"选项卡活动"字段存在于"简报"表单创建中,CakePHP 希望您的"简报"模型具有"选项卡活动"属性。

所以我的猜测是你的$this>数据数组应该是:

array(
    'Briefing' => array(
        'tab-active' => 'tab-4',
        'title' => 'My test title'
    )
)