Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Регистрация юзера
- // в контроллере
- $register = new Model_Register();
- $register->reg($email, $him_role); // при успешной регистрации вернет 1
- $register->errors; // ошибки валидации
- try {
- $register->email = $email;
- $register->check(); // вариант валидации не в модели а в контроллере
- } catch (ORM_Validation_Exceptions $e) {
- $this->errors = $e->errors('validation');
- return FALSE;
- }
- class Model_Register {
- public function reg($email, $him_role = 1) {
- $user = new Model_User();
- if ($user->valid($email)) {
- $user->name = '';
- $user->email = '';
- $user->password = '';
- try {
- $user->save(); // сохраняем юзера (автоматически применяются правила валидации из его модели). или вручную. метод $user->check();
- } catch (ORM_Validation_Exceptions $e) {
- $this->errors = $e->errors('validation');
- return FALSE;
- }
- $new_user = ORM::factory('user', array('email' => $email)); //получение id нового юзера
- $new_user->id;
- $role = new Model_Addrole();
- $role->user_id = $new_user->id;
- $role->role_id = $him_role;
- $role->save();
- return TRUE;
- } else {
- return FALSE;
- }
- }
- }
- class Model_Addrole extends ORM {
- protected $_table_name = 'roles_users';
- }
- class Model_User extends ORM {
- protected $_table_name = 'users';
- // правила валидации
- public function rules() {
- return array(
- 'email' => array(
- array('not_empty'),
- array('email'),
- array(array($this, 'email_unique')), // вместо $this может быть имя класса
- array('итд'),
- ),
- );
- }
- //проверка уникальности
- public function email_unique($email) {
- $new_email = ORM::factory('user', array('email' => $email));
- if ($new_email->loaded()) { // вернет TRUE если запись загрузилась
- return FALSE;
- }
- return TRUE;
- }
- }
- // Сообщения валидации для модели Model_User
- // в \application\messages\validation\user.php
- return array(
- 'email' => array(
- 'not_empty' => 'не ввели мыло',
- 'email' => 'ввели не мыло',
- 'email_unique' => 'мыло неуникально',
- ),
- );
Add Comment
Please, Sign In to add comment