Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 апр 2024, 01:01

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с созданием регистрации
СообщениеДобавлено: 16 май 2013, 19:15 
Не в сети
Зеленый

Зарегистрирован: 15 май 2013, 12:47
Сообщения: 6
Здравствуйте.
Нашел туториал, как сделать регистрацию: http://korzh.net/2011-04-kohana-3-1-pro ... telej.html, делаю все в точности, как там описано. Захожу по адресу kohana/member/register, ввожу регистрационные данные и получаю ошибку, изображенную на приложенном скриншоте. Я думаю, что это из-за того, что я использую Kohana 3.3, а туториал - для версии 3.1.

Изображение

Был бы очень благодарен, если бы мне помогли разобраться, в чем проблема и устранить её. Спасибо заранее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 май 2013, 19:32 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
http://brotkin.ru/2009/07/03/razbiraem-modul-auth/

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 май 2013, 23:37 
Не в сети
Новичок

Зарегистрирован: 06 мар 2013, 00:11
Сообщения: 29
А вы модель создали ошибка показывает что у вас нет такой модели

вот полностью рабочий пример модели

в application\classes\model\ должна быть user.php

пользуйтесь на здоровие

ато все говорят но готовый пример на дают

только для добавления имя фамилия в базу таблицу user добавляй поле first_name

содержание файла application\classes\model\user.php
Код:

class Model_User extends Model_Auth_User {

    protected $_table_name = 'users';
    protected $_primary_key = 'id';
    protected $_db_group = 'default';

//
  public function labels()
    {
        return array(
            'username' => 'Логин',
            'email' => 'E-mail',
            'first_name' => 'ФИО',
            'password' => 'Пароль',
            'password_confirm' => 'Повторить пароль',
         'phone' => '   Номер телефона',
        );
    }

    public function rules()
   {
      return array(
         'username' => array(
            array('not_empty'),
            array('min_length', array(':value', 4)),
            array('max_length', array(':value', 32)),
            array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),
            array(array($this, 'unique'), array('username', ':value')),
         ),
                   'first_name' => array(
            array('not_empty'),
            //array('min_length', array(':value', 4)),
            //array('max_length', array(':value', 32)),
         ),
         'password' => array(
            array('not_empty'),
            //array('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'))
         ),
         'email' => array(
            array('not_empty'),
            array('min_length', array(':value', 4)),
            array('max_length', array(':value', 127)),
            array('email'),
             array(array($this, 'unique'), array('email', ':value')),
         ),
             /*
            'phone' => array(
            array('not_empty'),
            ),
           'address' => array(
            array('not_empty'),
         ),
         
        'country_id' => array(
            array('not_empty'),
         ),
        */
    
         
      );
   }



    public function filters()
    {
        return array(
            TRUE => array(
                array('trim'),
            ),
         'password' => array(
            array(array(Auth::instance(), 'hash'))
         ),
         'username' => array(
                array('strip_tags'),
            ),
            'address' => array(
                array('strip_tags'),
            ),
            'first_name' => array(
                array('strip_tags'),
            ),
        );
    }

   
   public function username_available($usern)
    {
        // There are simpler ways to do this, but I will use ORM for the sake of the example
        return ORM::factory('user', array('username' => $usern))->loaded();
    }


  public static function get_password_validation($values)
  {
  return Validation::factory($values)
   ->rule('password', 'min_length', array(':value', 4))
   ->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
  }

}




Последний раз редактировалось norayrx 17 май 2013, 11:54, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 май 2013, 03:06 
Не в сети
Зеленый

Зарегистрирован: 15 май 2013, 12:47
Сообщения: 6
norayrx, спасибо. Теперь ошибка такая: ErrorException [ Fatal Error ]: Class 'Auth_Orm' not found

С утра попробую по ссылке во втором сообщении почитать и разобраться, тоже спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 май 2013, 04:01 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
модули auth, database, orm подключены?

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 май 2013, 04:40 
Не в сети
Зеленый

Зарегистрирован: 15 май 2013, 12:47
Сообщения: 6
Да, конечно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 май 2013, 11:37 
Не в сети
Новичок

Зарегистрирован: 06 мар 2013, 00:11
Сообщения: 29
Вот тебе и class Auth это Controller_Auth раширяется из Controller_Base

читай Коментарии внутри класса


Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Auth extends Controller_Base{

    public function action_index() {
          $this->action_login();
    }

    public function action_login() {
   
        if(Auth::instance()->logged_in('login')) {
            $this->request->redirect('account');
          // если kohana3.3       $this->redirect('account');

        }

        if (isset($_POST['submit'])){
          $data = Arr::extract($_POST, array('username', 'password', 'remember'));

          $status = Auth::instance()->login($data['username'], $data['password'], (bool) $data['remember']);

            if ($status){
                if(Auth::instance()->logged_in('login')) {
                    $this->request->redirect('account');
                // если kohana3.3       $this->redirect('account');
                }
               
                $this->request->redirect('account');
             // если kohana3.3       $this->redirect('account');
            }
            else {
                $errors = array(Kohana::message('validation', 'no_user'));
            }
        }
   
        $login = View::factory('loginform')  //  шаблон формы logina application\views\loginform.php
                    ->bind('errors', $errors)
          >bind('data', $data);
               
          // Выводим в шаблон
        $this->template->page_title = 'Вход в Личный Кабинет';
        $this->template->block_center = array('login'=>$login);
   }
   
    public function action_register() {

        if (isset($_REQUEST['submit'])){
      
           $data = Arr::extract($_REQUEST, array('username', 'password', 'first_name', 'password_confirm', 'email', 'phone'));
           $users = ORM::factory('user');

            try {
         
         $extra = Validation::factory($_REQUEST)
                ->rule('agree', 'not_empty');
         
               
                $users->create_user($_REQUEST, array(
                    'username',
                    'first_name',
                    'password',
                    'email',
          'phone',
         'address',               
                ));

                $role = ORM::factory('role', array('name' => 'login'));
      $users->add('roles', $role);

                 mail($data['email'], 'Регистрация на сайте', 'Регистрация на сайте завершена ' );

                $this->action_login();
                $this->request->redirect('account');
                     
                $this->action_login();
                $this->request->redirect('account');

            }
            catch (ORM_Validation_Exception $e) {
                $errors = $e->errors('user');
            }
         
         catch (Exception $d){
         if( !$extra->check())
            {
                  $error = $d->errors('validation');
            }
         }
        }

                  // шаблон регистрации registration.php application\views\registration.php
                   $form_register = View::factory('registration')
                            ->bind('errors', $errors)
              ->bind('error', $error)
                            ->bind('data', $data);

        // Выводим в шаблон
        $this->template->page_title = 'Регистрация пользователя';
        $this->template->block_center = array('form_register'=>$form_register);
    }

   
    public function action_logout() {
        if(Auth::instance()->logout()) {
            $this->request->redirect();
        }
    }


}



classes\controller\base.php базовый контроллер
Код:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Base extends Controller_Template{

   public $template = 'base'; //Базовый шаблон application\views\base.php
   protected $auth;
   protected $user;
   protected $cache;
   protected $session;
   protected $captcha;

   public function before()
   {
      parent::before();      
      
      Cookie::$salt = 'sdfsdfs234234';
      Session::$default = 'cookie';
      
      $this->session = Session::instance();
      $this->auth = Auth::instance();
      $this->user = $this->auth->get_user();
      
      // Подключаем стили и скрипты
               $this->template->styles = array();
               $this->template->scripts = array();
   
      //Вывод в шаблон
      $this->template->title = null;
      $this->template->site_name = null;
      $this->template->page_title = null;
                $this->template->meta_description = null;
      $this->template->meta_keywords = null;

      
      //Подключаем главный шаблон
      $this->template->userarea = null;
      $this->template->top_menu = null;
      $this->template->block_top1 = null;
      $this->template->block_top2 = null;
      $this->template->block_top3 = null;
      $this->template->block_left = null;
      $this->template->block_center = null;
      $this->template->block_right = null;
      $this->template->block_footer = null;      
   }
}




Шаблон базe.php Без разметки сам сделаешь


Код:

<!DOCTYPE html>
<html lang="ru">
<head>
<title><?=$page_title; ?> <?=$title; ?></title>
</head>
<body>
<? if($block_top2) print $block_top2 ?>

<? if(isset($userarea) print $userarea) ?>

<? if($block_left) { foreach($block_left as $lblock) {print $lblock;} }?>

<? if($block_left) { foreach($block_right as $lblock) {print $rblock;} }?>

<? if($block_center){ foreach($block_center as $bcenter) {print $bcenter;} }?>

</body>
</html>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 май 2013, 18:04 
Не в сети
Зеленый

Зарегистрирован: 15 май 2013, 12:47
Сообщения: 6
Всем спасибо за помощь :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 май 2013, 01:29 
Не в сети
Новичок

Зарегистрирован: 06 мар 2013, 00:11
Сообщения: 29
Интеренсно? Все получился?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2013, 00:51 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
Видимо человек сам решил проблему, а здесь отписался в качестве благодарности. Так держать!

_________________
Они плакали и кололись, но продолжали есть кактус!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 74


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group