Kohana 3.0 - 验证:如果其中一个字段不为空,则出错

时间:2011-07-20 12:22:09

标签: kohana validation kohana-3

我有四个字段。让我们称呼他们abcd。我需要验证它们。

错误是:

  • 一到三个字段不为空;

错误是时:

  • 所有字段均不为空,
  • 所有字段均为空;

这里有任何简洁的解决方案吗?谢谢你的建议。

修改

只有关系是所有四个变量都以event_为前缀。它为我提供了event_nameevent_description等等。

编辑#2:

目前我有类似......

if (
       !empty($values['event_date'])
    && !empty($values['event_time'])
    && !empty($values['event_name'])
    && !empty($values['event_description'])
) {

检查所有字段是否已填满,如果是,则添加事件。

正如我之前所说,我需要在某些字段未填满时显示用户友好的错误(例如,用户忘记输入说明)。无论如何,当所有字段都填满(这意味着 - 一切正常)或没有字段填满时(这意味着 - 用户忽略事件添加而不想添加一个) - 不应显示错误。

我可以使用16'if'语句编写代码,但是没有更好的方法吗? :)

2 个答案:

答案 0 :(得分:1)

这不是很漂亮,但只要你想要检查的字段有一些独特之处(例如“event _...”),你就可以遍历变量数组($ values,$ _POST等) )并仅检查重要的字段。然后,您可以轻松检查全部或全部情况。

这是一个简单的例子:

$total = 0;
$filled = 0;
foreach($values as $field => $val) {
    if(strpos($field,'event_') === 0) {
        $total++;
        if( ! empty($val)) {
            $filled++;
        }
    }
}
if($filled == 0 OR $total == $filled) {
    //PASS VALIDATION
} else {
    //FAIL VALIDATION
}

答案 1 :(得分:0)

其中一个输入的值与没有输入的值之间是否存在关系? 你能把它解析成空值吗?

if ( ! isset($post->a) )  $post->a = '';