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

时间:2012-07-30 22:30:00

标签: php forms validation

我有一个表单(在上一页上)用户可以选择他们想要包含的项目数。提交第二个页面后,它将通过validation script运行,如果验证中发生错误,它将获取需求,字段名称和消息。

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创建片段。

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

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

由于您已经在双方都进行了循环,为什么不使用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.";
    }
}