私は馬鹿に遭遇しましたが、依然として重大な問題です。私は "サインアップ"のようなページの検証を作成しています。入力された値が有害ではなく、私のニーズに合っていることを確認する必要があります。 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!読みやすく、理解しやすく、維持しやすい。
(ところであなたは
classname
は、クラス名またはオブジェクトインスタンス両方にすることができ$validation->add_callable('classname')
を使用して、同様に任意のクラス、現在のコントローラやモデルを追加することができます)エラーメッセージを設定することができます:http://pastie.org/1904127。 – daGrevis