【问题标题】:CakePHP appending to form data on submitCakePHP 在提交时附加到表单数据
【发布时间】:2014-08-11 23:00:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: jquery cakephp cakephp-2.5


    【解决方案1】:

    是的。当您使用 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 只需在控制器中自动处理它。

    【讨论】:

    • 感谢您的回复。我确实想过这样做。例如,我的地址设置是一组字段,可将地址添加到添加人员页面内的表中。而不是每次用户希望添加另一个地址时都生成一组新的字段。我曾想过为这些添加到表中的新地址创建一组隐藏字段,然后将这些字段附加到帖子数据中,但是我认为只使用 JSON 会更容易管理和更优雅隐藏字段。我希望以某种方式将此 JSON 数据注入到表单数据中。
    • 在这种情况下,听起来你这样做的方式很好。
    • 其实我已经考虑过你的建议,我现在相信这是要走的路。通过将一组隐藏字段附加到包含要提交的数据的表行中,我减少了很多 jQuery 和 JSON 开销。尤其是在创建、更新和删除行时。这也意味着 cake 可以做到这一点并附加数据,而无需我跳过几圈。再次感谢您的回复,它给了我我需要的断路器。
    猜你喜欢
    • 2021-10-08
    • 2013-04-18
    • 1970-01-01
    • 2014-02-08
    • 2013-07-20
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多