gpt4 book ai didi

php - 允许用户在运行时向表单添加字段

转载 作者:行者123 更新时间:2023-11-30 18:37:58 27 4
gpt4 key购买 nike

我正在修改作为 Web 应用程序一部分的表单组件,以支持用户在运行时添加和删除额外的表单字段。

当提交表单时,表单中的数据被设置为一个 php 对象:

<?php
class users {
public function setName($name){
(...)
}

public function getName(){
(...)
}

public function setSomeAttribute($name){
(...)
}

public function getSomeAttribute(){
(...)
}
}

表单是这样生成的:

$form = new Form();
$form->addField('Text', 'Name', (... some other parameters...))
->addField('Address', 'SomeAttribute', (... some other parameters...));

生成的 View 包含表示每个字段的对象树(一些“字段”,例如地址可以包含子字段,例如文本输入。

如果我们知道对象属性的名称,表单组件就可以使用 getter 和 setter 轻松地将表单字段的结果绑定(bind)到相应的对象属性。

我现在面临的问题是:我需要允许用户在运行时添加字段。这将使用 Jquery 工作,也可以为没有 javascript 的用户提供回退。

假设我们有一个页面,用户可以在其中编辑他的个人资料并添加多个送货地址。他将有一个按钮,上面写着“添加地址”。单击此按钮将执行以下操作:

  • 对于启用了 javascript 的用户,用户将立即看到一个新的“地址字段”,其中包含一些下拉菜单和添加的文本字段。
  • 对于未启用 javascript 的用户,页面将刷新,并添加由几个下拉菜单和文本字段组成的新“地址字段”。

让 PHP 端知道这些新字段存在并且我们需要从中获取发布数据的最佳方式是什么?

最佳答案

所有表单元素都将在请求中提交并可供 PHP 使用。因此您只需要使用在表单中为元素分配的任何名称来引用元素。

对于 2 个地址的国家/地区,您希望为元素命名为“addr_1_country”、“addr_2_country”或“addr_country[]”,以使值在数组中可用。如果你使用前者,你可以遍历名称“addr_$i_country”直到你发现它们未设置(或者让 JQuery 更新一个也被提交的计数值,比如告诉你循环多长时间的“addr_count”)。

无论哪种方式,您只需要知道名称即可。但是如果您只能指定“地址”和/或子字段的名称您不能自己指定,那么您可能会遇到问题。也许您的“->addField()”足够聪明,可以为您命名它们。否则将“表单”更新为自动命名或接受“名称”参数。

关于php - 允许用户在运行时向表单添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com