如何构造HTML表单元素,以便将其轻松转换为PHP对象?
我正在尝试找出命名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将它们
显然,我可以编写一系列代码来搜索$\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