2011-05-15 9 views
1

私は馬鹿に遭遇しましたが、依然として重大な問題です。私は "サインアップ"のようなページの検証を作成しています。入力された値が有害ではなく、私のニーズに合っていることを確認する必要があります。 Fuelフレームワークのおかげで、それは十分簡単です。次へ...ユーザー名または電子メールがまだ取得されていないことを確認する必要があります。私は仕事をする方法を書いた。しかし、私の問題はすべての "if文"を書く必要があるときです。入力の検証のために読み込み可能なif文を書き込む方法は?

これは私が正確に今いるものです。私はそれが正しい方法であるかどうかはわかりません。私はそれを "if"と多くのレベル(ネスト、私は推測する)で書くことができます。私は "if/else..if"を使うことができます。何を使用しますか?

if ($validation->run() === true) { 

    if (Diesel::usernameExists($username) === false) { 

     $error = 'This username is already taken! Try again...'; 

    } 

    if (Diesel::emailExists($email) === false) { 

     $error = 'This e-mail is already taken! Try again...'; 

    } 


    if (!isSet($error)) { 

     Diesel::signUp($username, sha1($password), $email); 


     Session::set_flash('notification', 'You have been successfully signed-up! Thanks...'); 
     Session::set_flash('location', 'sign-in'); 

     $this->response->redirect('notification'); 

    } 

} else { 

    Session::set_flash('error', 'There was something wrong with validation! Try again...'); 

    $this->response->redirect('sign-up'); 

} 

私の目標は、他の言葉で、にある:有害ではないコンテンツを入力

1)を確認し、ステップによって私のニーズ($validation->run())、

2)ステップに合いました.. 。ユーザー名は既に取られていません(usernameExists())?

3)電子メールはすでに受信していませんか(emailExists())?

4)以上があるかもしれません...

アプリケーションは、ステップ#1は、例えば、falseの場合#ステップ2にさらに行く必要はありません。その後、私はエラーメッセージが含まれている文字列を持っている必要がありますが、あなたは知っている、各ステップのメッセージは異なっています。それから、私はそれを表示するためにメッセージを渡すことができました(メッセージがあれば)!もちろん、私は動作するコードを書くことができますが、ベストプラクティスを探しています... DRY(自分自身を繰り返さないでください)とKISS(Keep It Simple、Stupid!読みやすく、理解しやすく、維持しやすい。

+0

(ところであなたはclassnameは、クラス名またはオブジェクトインスタンス両方にすることができ$validation->add_callable('classname')を使用して、同様に任意のクラス、現在のコントローラやモデルを追加することができます)エラーメッセージを設定することができます:http://pastie.org/1904127。 – daGrevis

答えて

3

それ以外の場合は、私が使用すると思います。 こうすれば、最初のifが真であれば、それはすべて それ以外の場合は次の行になります。 私はあなたが望むものだと思います。

+0

ねえ、私は自分の心をクリアした後も同じだと思います。ありがとう。 – daGrevis

1

なぜそれらの検証方法はありませんか?

http://fuelphp.com/docs/classes/validation.html「検証クラスを拡張する」のチェックボックスをオンにすると、検証の実行時に実行されます。 "Error Messages" の下に記載されているようにあなたはここに結果があります

+0

ありがとう、Jelmer。それをしようとします! =] – daGrevis

関連する問題