Вопрос по организации моделей и контроллеров

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Вопрос по организации моделей и контроллеров

Сообщение XAKEPEHOK »

Добрый день! В Yii я начинающий, как и в использовании архитектуры MVC.

Подскажите пожалуйста, у меня есть таблица Users в DB и модель Users. Авторизацию пользователя по данным из БД я сделал, сейчас хочу сделать регистрацию (я знаю что есть готовые расширения, но моя цель - учеба). Подскажите, как лучше, сделать две модели Users или лучше пользоваться одной?

Дело в том, что в БД у меня данные хранятся также как в примере с блогом: соль и md5(соль+пароль). В связи с этим возникла некоторая трудность: при регистрации нового пользователя я генерирую соль и хэш пароля перекрывая метод beforeSave() модели Users. Делаю это в beforeSave потому, что при регистрации требуется повторный ввод пароля. Если хэшировать пароль в контроллере UsersControler в соответствующем действии, то в случае несовпадения пароля и его подтверждения вместо самого пароля будет выведен его хэш (конечно, можно выводить поля пароля пустые, но вопрос не в этом).

Код: Выделить всё

protected function beforeSave()
    {
        if(parent::beforeSave())
        {
            $this->password = $this->hashPassword($this->salt,$this->password);
            $this->register = new CDbExpression('NOW()');
            return true;
        }
        else
            return false;
    }
У меня в БД есть поле lastLogin, в которое записывается дата и время последнего посещения, который соответственно надо обновлять при каждом входе пользователя. Проблема в том, что в этом случае тоже срабатывает beforeSave, которое перехэширует уже хэшированный пароль.

Вопрос: как с этим быть? Я конечно понимаю, что можно ввести доп. свойства и проверять их при выполнении события, но еще ведь можно создать отдельную модель. Или как быть? Посоветуйте пожалуйста
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос по организации моделей и контроллеров

Сообщение anton44eg »

используйте сцернаии. и в beforeSave проверяйте сценарий
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Re: Вопрос по организации моделей и контроллеров

Сообщение XAKEPEHOK »

Т.е. я правильно понимаю, что предпочтительнее, чтобы модель осталась одна, верно?
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
G0rg0t
Сообщения: 21
Зарегистрирован: 2011.12.05, 22:47

Re: Вопрос по организации моделей и контроллеров

Сообщение G0rg0t »

Да. Одна таблица — одна модель.
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Re: Вопрос по организации моделей и контроллеров

Сообщение XAKEPEHOK »

Всем спасибо за ответы. Не буду создавать отдельную тему и спрошу здесь же.

У меня в БД есть таблица Statistic и ее AR-модель. Я хочу получить запись статистики за определенную дату для конкретного пользователя, причем вывести это в отдельный метод. Этот метод должен быть описан в модели или контроллере? Т.к. я хочу получить в качестве результата экземпляр класса модели AR, то видимо мне нужно описывать это в контроллере?

И вообще, можете привести практические примеры (не код, а просто на словах), какие методы могут быть описаны в самой модели и для чего? Верно ли я понимаю, что там можно описывать только что-то, что будет представлять данные уже имеющиеся в экземпляре AR в измененном виде, например, описав метод "sum" который будет возвращать сумму двух значений в БД?
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Re: Вопрос по организации моделей и контроллеров

Сообщение XAKEPEHOK »

up
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос по организации моделей и контроллеров

Сообщение anton44eg »

Метод относится к данным? - Пишите в модель!
Вы же сами сказали - для конкретного пользователя
есть еще такая ссылочка почитать: http://rmcreative.ru/blog/post/tonkie-i-tolstye-modeli
Ответить