2011-07-20 37 views
1

我有四个字段。让我们叫他们a,b,cd。我需要验证它们。Kohana 3.0 - 验证:错误如果其中一个字段不为空

错误时:

  • 一直到三个字段是不是空的;

错误是时:

  • 所有字段是不是空的,
  • 所有字段是空的;

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

编辑:

只有关系是所有四个变量的前缀为event_。它给我event_nameevent_description等。

编辑#2:

目前,我有这样的事情......

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

它检查所有字段被填满,然后如果这是真的,则添加事件。

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

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

+0

对不起,我们将需要看到更多的代码能够帮助..什么,至少是错误讯息? – mdskinner

+0

@mdskinner哈,哈。我认为你没有理解我的问题。当* * upper是条件*时,我需要显示用户友好的错误。我可以像16'if'语句那样正确,但是我正在使用Validate类寻找一些简洁的方法。 – daGrevis

回答

1

这是不漂亮,但只要你对你要检查(如“事件_...”)领域的独特的东西,你可以通过变量数组循环($值, $ _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 
} 
0

是否有输入值之一和没有输入值之间的关系? 你能把它解析为一个空值吗?

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

你是什么意思关系? – daGrevis

+0

那么,他们是否以某种方式相互依赖(如果$ a!=''$ e == $ b)?你可以发布一些你的实际表单标记,以及你获得的错误信息。与相关模型中的控制器逻辑和任何验证定义一起。 (只是相关的片段) – mdskinner

+0

看到我的文章的修改。 – daGrevis

相关问题