这就是我现在所拥有的。我不确定这是正确的方法。我可以用“if's”和很多级别(嵌套,我猜)写出来。我可以在那里使用“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为假,则不需要进一步执行步骤#2。之后,我需要包含错误消息的字符串,但是,您知道,每个步骤的消息都是不同的。然后我可以传递消息来显示它(如果有消息)!当然,我可以编写有效的代码,但我正在寻找最佳实践......我必须遵循DRY(不要重复自己)和KISS(保持简单,愚蠢!)原则来保持我的代码易读且易于理解和维护。
答案 0 :(得分:3)
如果那么我会使用,如果,那将是我认为最有意义的。 这样,如果第一个if是真的就是它会做的全部, 否则它会进入下一个。 我认为这就是你想要的。
答案 1 :(得分:1)
为什么不用这些方法制作验证方法?
http://fuelphp.com/docs/classes/validation.html检查“扩展验证类”,这样它们将在运行验证时运行。您可以按照"Error Messages"中的说明设置错误消息
(顺便说一下,您可以使用$validation->add_callable('classname')
添加任何类,当前控制器或模型,其中classname
可以是类名或对象实例)