CakePHP附加表单提交数据

时间:2014-08-11 23:00:30

标签: jquery cakephp cakephp-2.5

我有添加人物的页面。一个人有一个姓名,出生日期等。一个人也可以有许多电话号码和许多地址(家庭和/或邮政)。在我看来,我有一些jQuery允许用户将新的电话号码和地址添加到新的人员记录中。他们可以添加的数量没有限制。

目前我正在做的是,当提交表单时,jQuery会获取所有电话号码和地址,将它们转换为JSON并将它们插入隐藏字段。在控制器中,这个JSON数据然后被转换为PHP数组,然后在调用saveAll之前附加到其余数据。

我的问题是,这是实现这一目标的最佳方法吗?有没有办法将这些数据提交给控制器,就像其他表单数据一样,这样除了调用saveAll之外我不需要在控制器中做任何事情?

1 个答案:

答案 0 :(得分:0)

是。当您使用jQuery添加字段时,您只需要坚持使用Cake的命名约定。

'名称'输入字段的属性应为以下格式:

data[ModelName][X][field_name]

其中X是一个整数,表示该记录的编号。例如。如果您有3个关联地址,每个地址都有line_1line_2字段,则生成的字段应如下所示:

<input type=​"text" name=​"data[Address]​[1]​[line_1]​" id=​"Address1Line1">​
<input type=​"text" name=​"data[Address]​[1]​[line_2]​" id=​"Address1Line2">​
<input type=​"text" name=​"data[Address]​[2]​[line_1]​" id=​"Address2Line1">​
<input type=​"text" name=​"data[Address]​[2]​[line_2]​" id=​"Address2Line2">​
<input type=​"text" name=​"data[Address]​[3]​[line_1]​" id=​"Address3Line1">​
<input type=​"text" name=​"data[Address]​[3]​[line_2]​" id=​"Address3Line2">​

请注意,X不是ID或其他任何内容 - 它只是一个数字,用于在同一模型中存在多个记录时对不同记录进行区分。

如果您坚持使用Cake的约定,那么Cake只需在控制器中自动处理它。