建议在php中扩展动态表单验证


Advice expanding a dynamic form validation in php

我有一个表单(在上一页上),用户可以选择要包含的项目数量。提交第二个页面后,将通过验证脚本运行该页面,该脚本包含需求、字段名以及在验证中发生错误时返回的消息。

if($numFieldSelectedearlier > 0) {
    for($z=1; $z<=$numFieldSelectedearlier; $z++) {
        $rules[] = "required,name,Name for item {$z} is required.";
    }
}

在我的html表单中,该字段如下所示:

<form name="someForm" action="" method="post">
<?php if ($numFieldSelectedearlier > 0) {
    for($y=1; $y <= $numFieldSelectedearlier; $y++) { ?>        
    <input type="text" name="name[]" id="name<?php echo $y; ?>" />
<?php }
} ?>
....

我遇到的问题是,该脚本目前是为处理单个元素(一个名为"name"的字段等)而构建的。php验证器获取所有POST元素,并将它们分解为字段来进行验证,我正在努力弄清楚如何修改验证脚本本身(考虑到它会改变验证器的整体结构,以检查元素名称本身是否是一个数组,然后循环通过),或者我可能没有考虑一种更简单的方法处理实际的$rules创建部分。

注意:我似乎唯一关心的是a字段是必需的,但我想基本上通过与任何其他字段相同的验证选项(必需、仅限数字、电子邮件等)来传递排列的项目,所以我不想重复理论上已经存在的代码。

感谢您提供的任何帮助。

既然您已经在两边进行循环了,为什么不直接使用name1name2等名称并将规则链接到这些字段呢?

在HTML方面,您可以更改name:

<input type="text" name="name<?php echo $y; ?>" ... />

在规则创建方面,您将绑定到这些字段名:

if($numFieldSelectedearlier > 0) {
    for($z=1; $z<=$numFieldSelectedearlier; $z++) {
        $rules[] = "required,name{$z},Name for item {$z} is required.";
    }
}