0

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

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

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

4

1 回答 1

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 只需在控制器中自动处理它。

于 2014-08-11T23:20:08.490 回答