Я создаю систему авторизации на Kohana 3.1. Это по образовательным причинам.
Прямо сейчас я пытаюсь выучить ORM. Я понимаю, что я могу сделать с ORM, но я не понимаю, как я могу реализовать это в структуре MVC ... Сейчас все работает, но кажется, что это ужасно неправильно!
Вот действие моего контроллера:
public function action_signUp() {
if ( !$this->request->post() ) {
$view = new View_SignUp;
$view->title = 'Sign Up';
$this->response->body( $view->render() );
} else {
$validation =
Validation::factory( $this->request->post() )
->rule( 'token', 'not_empty' )
->rule( 'token', 'Security::check' )
->rule( 'username', 'not_empty' )
->rule( 'username', 'max_length', array( ':value', 32 ) )
->rule( 'username', 'alpha_dash', array( ':value', true ) ) // Alpha chars (from UTF-8), numbers, underscores and dashes...
->rule( 'password', 'not_empty' )
->rule( 'password', 'min_length', array( ':value', 6 ) )
->rule( 'password', 'max_length', array( ':value', 255 ) )
->rule( 'passwordRepeatedly', 'not_empty' )
->rule( 'passwordRepeatedly', 'matches', array( ':validation', 'passwordRepeatedly', 'password' ) )
->rule( 'email', 'not_empty' )
->rule( 'email', 'email' );
if ( $validation->check() ) {
$user = ORM::factory( 'User' );
$user->username = $this->request->post( 'username' );
$user->password = sha1( $this->request->post( 'password' ) ); // To add salt or something...
$user->email = $this->request->post( 'email' );
$user->save();
$this->request->redirect( 'sign-in' );
} else {
$view = new View_SignUp;
$view->title = 'Sign Up';
$view->haveErrors = true;
forEach ( $validation->errors( 'errorMessages' ) as $error ) {
$view->errors[] = array( 'error' => $error );
}
$this->response->body( $view->render() );
}
}
}
А вот и моя модель ORM ...
class Model_User extends ORM {
//
}
Это действительно ужасно, а? Я знаю, что контроллеры должны быть крошечными, купить модели могут быть такими жирными, как они хотят ... но. Помоги мне, или, лучше, покажи мне пример!