2011-07-20 8 views
1

フィールドが4つあります。 abcdと呼ぶことができます。私はそれらを検証する必要があります。Kohana 3.0 - 検証:フィールドの1つが空でない場合にエラーが発生する

  • 1〜3 TILのフィールドが空ではありません;:

    エラーがときですすべてのフィールドが空ではありません

    • すべてのフィールドが空である;:

    エラー時にではありません

ここにきれいな解決策はありますか?アドバイスをありがとう。

編集:

だけの関係は、すべての4つの変数がevent_が付いていることです。

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

それはすべてのフィールドが、その後埋めとされていることを確認します...私は何かなどを持っている現時点で

:それは私event_nameevent_descriptionなど。

編集#2を与えますそれが本当なら、イベントを追加します。

前にも述べましたが、一部のフィールドがいっぱいになっていない場合(ユーザーが説明を入力するのを忘れたなど)、ユーザーフレンドリーなエラーを表示する必要があります。とにかく、すべてのフィールドがいっぱいになったとき(それはすべてOK)、またはフィールドがいっぱいになっていないとき(ユーザーがイベントを無視して追加しないことを意味します)、エラーは表示されません。

私は16のif文でコードを書くことができましたが、それ以上の方法はありませんか? :)

+0

は申し訳ありませんが、少なくとも、エラーメッセージは何..助けることができるように多くのコードを参照する必要があるとしていますか? – mdskinner

+0

@mdskinner Ha、ha。私はあなたが私の問題を理解していないと思う。 ... * 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

関連する問題