我有添加人物的页面。一个人有一个姓名,出生日期等。一个人也可以有许多电话号码和许多地址(家庭和/或邮政)。在我看来,我有一些jQuery允许用户将新的电话号码和地址添加到新的人员记录中。他们可以添加的数量没有限制。
目前我正在做的是,当提交表单时,jQuery会获取所有电话号码和地址,将它们转换为JSON并将它们插入隐藏字段。在控制器中,这个JSON数据然后被转换为PHP数组,然后在调用saveAll之前附加到其余数据。
我的问题是,这是实现这一目标的最佳方法吗?有没有办法将这些数据提交给控制器,就像其他表单数据一样,这样除了调用saveAll之外我不需要在控制器中做任何事情?
答案 0 :(得分:0)
是。当您使用jQuery添加字段时,您只需要坚持使用Cake的命名约定。
'名称'输入字段的属性应为以下格式:
data[ModelName][X][field_name]
其中X是一个整数,表示该记录的编号。例如。如果您有3个关联地址,每个地址都有line_1
和line_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只需在控制器中自动处理它。