2011-07-20 46 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

相關問題