如何构造HTML表单元素,以便将其轻松转换为PHP对象?

如何构造HTML表单元素,以便将其轻松转换为PHP对象?,php,jquery,html,oop,webforms,Php,Jquery,Html,Oop,Webforms,我正在尝试找出命名HTML表单字段的最佳方法,以便可以轻松地将它们解析为一组PHP对象 例如,我有下面的元素表:(假设它在表单中) 显然,我可以编写一系列代码来搜索$\u POST数组,找到所有paymentType/Amount/Account等值,并将它们放入对象中。但是这感觉有点难闻,我想知道是否有更好的方法来命名这些表单元素 另一方面,我曾尝试将字段命名为控制数组(至少我是这么称呼它们的),因此它将取代paymentType0,取而代之的是paymentType0[0],PHP将它们

我正在尝试找出命名HTML表单字段的最佳方法,以便可以轻松地将它们解析为一组PHP对象

例如,我有下面的元素表:(假设它在表单中)


显然,我可以编写一系列代码来搜索$\u POST数组,找到所有paymentType/Amount/Account等值,并将它们放入对象中。但是这感觉有点难闻,我想知道是否有更好的方法来命名这些表单元素

另一方面,我曾尝试将字段命名为控制数组(至少我是这么称呼它们的),因此它将取代paymentType0,取而代之的是paymentType0[0],PHP将它们视为一个我可以迭代的数组。这种方法的问题是,由于方括号的缘故,使用jQuery引用这些字段变得非常困难


<这两个世界的最佳解决方案是什么?

你可以考虑用jQuery对提交的值进行预处理。不必提交原始表单数据,您可以在客户端对其进行结构化,并使用JSON将其传递到服务器,JSON可以轻松转换为PHP对象。

我同意n3rd的观点,如果您在传递变量时遇到问题,请在您端对数据进行预格式化

对这个想法的一点小小的推断仅仅意味着将您的数据存储在一个JSON对象中,当用户输入值并在提交时将JSON对象发送到下一页,而不必担心每个变量名是什么

如果不是这样,还有另一种可能的解决方案,尽管我不确定它是否解决了您的特定问题:


(摘自谷歌搜索“php表单名称jquery数组”)

使用带方括号的名称,以便php的表单处理库将它们转换为数组


然后,如果需要使用JavaScript引用它们,请使用。

您可以尝试以下代码:

foreach($_POST as $key => $val)
{
    if(isset($$key)) $$key = $val;
}

但是,这种方法是不好的,因为您可以发布诸如PHP_SELF等变量,所以您希望检查这些变量。

您可以使用数组而不会出现任何问题,但不要调用字段
paymentType[0]
paymentAmount[0]

取而代之的是叫他们
payment[0][type]
payment[0][amount]
,等等

然后将记录方便地分组到关联数组中,这些数组更易于操作:

foreach ($_POST["payment"] as $payment) {
   echo "The type was $payment[type] and the amount was $payment[amount]";
}
至于jQuery:遵循David的建议。JavaScript中的对象实际上只是带有语法糖的关联数组,您可以按如下方式访问它们的成员:

myForm["payment[0][amount]"].value = 300

当您使用数组时,通过jQuery访问字段有什么困难?这变得很困难,因为jQuery使用方括号作为属性选择器,例如:$('input[@type=text')为了引用控件数组,我必须这样做:$('payment\\\[0\\\]\[type\\]'),这显然不是很好。。。
myForm["payment[0][amount]"].value = 300