Guest User

Untitled

a guest
Jul 13th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.44 KB | None | 0 0
  1. // Регистрация юзера
  2. // в контроллере
  3. $register = new Model_Register();
  4. $register->reg($email, $him_role); // при успешной регистрации вернет 1
  5. $register->errors; // ошибки валидации
  6. try {
  7.   $register->email = $email;
  8.   $register->check(); // вариант валидации не в модели а в контроллере
  9. } catch (ORM_Validation_Exceptions $e) {
  10.   $this->errors = $e->errors('validation');
  11.   return FALSE;
  12. }
  13.  
  14. class Model_Register {
  15.   public function reg($email, $him_role = 1) {
  16.     $user = new Model_User();
  17.     if ($user->valid($email)) {
  18.       $user->name = '';
  19.       $user->email = '';
  20.       $user->password = '';
  21.       try {
  22.         $user->save(); // сохраняем юзера (автоматически применяются правила валидации из его модели). или вручную. метод $user->check();
  23.       } catch (ORM_Validation_Exceptions $e) {
  24.         $this->errors = $e->errors('validation');
  25.         return FALSE;
  26.       }
  27.       $new_user = ORM::factory('user', array('email' => $email)); //получение id нового юзера
  28.       $new_user->id;
  29.  
  30.       $role = new Model_Addrole();
  31.       $role->user_id = $new_user->id;
  32.       $role->role_id = $him_role;
  33.       $role->save();
  34.  
  35.       return TRUE;
  36.     } else {
  37.       return FALSE;
  38.     }
  39.   }
  40.  
  41. }
  42.  
  43. class Model_Addrole extends ORM {
  44.   protected $_table_name = 'roles_users';
  45. }
  46.  
  47. class Model_User extends ORM {
  48.   protected $_table_name = 'users';
  49. //  правила валидации
  50.   public function rules() {
  51.     return array(
  52.         'email' => array(
  53.             array('not_empty'),
  54.             array('email'),
  55.             array(array($this, 'email_unique')), // вместо $this может быть имя класса
  56.             array('итд'),
  57.         ),
  58.     );
  59.   }
  60. //проверка уникальности
  61.   public function email_unique($email) {
  62.     $new_email = ORM::factory('user', array('email' => $email));
  63.     if ($new_email->loaded()) { // вернет TRUE если запись загрузилась
  64.       return FALSE;
  65.     }
  66.     return TRUE;
  67.   }
  68.  
  69. }
  70.  
  71. // Сообщения валидации для модели Model_User
  72. // в \application\messages\validation\user.php
  73. return array(
  74.     'email' => array(
  75.         'not_empty' => 'не ввели мыло',
  76.         'email' => 'ввели не мыло',
  77.         'email_unique' => 'мыло неуникально',
  78.     ),
  79. );
Add Comment
Please, Sign In to add comment