【发布时间】:2014-11-20 12:50:08
【问题描述】:
我试图找出一种方法来循环使用返回 true 或 false 的验证方法的对象,然后最终知道是否有任何对象返回 false。
$validate_form = true;
//Loop through groups
foreach ($this->field_groups as $field_group) {
//Loop through fields
foreach ($field_group->fields as $field) {
$validated = $field->validate($data[$field->name]);
//if any of these returned false, set $validate_form to false
}
}
return $validate_form;
但我根本不知道如何实现这一目标。我考虑过使用数组,然后检查数组中的任何值是否包含“false”。但这似乎有点笨拙。
我觉得必须有一个关于如何做到这一点的“最佳实践”?
更新:每个字段都运行->validate() 方法很重要。即使是第一个“false”之后的字段。
谢谢!
【问题讨论】:
-
那么,您在问题中编写的 exact 代码有什么问题?这似乎正是您所需要的。
-
为什么所有验证方法都运行很重要?
-
@Sammitch :我的代码永远不会返回 false,因为从未设置过。此外,如果我确实使用该方法返回 $validate_form 的值,那么结果将只是最后一个方法返回的值
-
@Hammerstein :因为该方法在运行时设置了一些属性(错误消息)。这些稍后在脚本中使用。但如果我不对所有这些都运行该方法,那么其中一些错误将不会被设置。