1

情况

我正在处理一个大型表单,该表单已分成几个选项卡,既可以对某种字段进行分组,也可以使填写更容易。使用 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);在 myBriefingsController时,这就是我得到的:

/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 没有任何问题(已经以多种方式对其进行了测试),真正的问题是在表单提交后重新填充此字段。任何帮助深表感谢。

4

1 回答 1

1

CakePHP 使用表单模型的数据填充表单。因此,如果您为“Briefing”创建创建表单,CakePHP 将查看 $this->data['Briefing'] 数组,并填充与该数组中存在的字段匹配的输入。因此,当您隐藏的“tab-active”字段出现在“Briefing”表单创建中时,CakePHP 期望您的“Briefing”模型具有“tab-active”属性。

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

array(
    'Briefing' => array(
        'tab-active' => 'tab-4',
        'title' => 'My test title'
    )
)
于 2013-10-09T08:33:34.900 回答