Добрый день.
Делаю свой первый проект на yii. Поэтому есть некоторые проблемы с выбором правильной архитектуры приложения.
1) Регистрация пользователя.
У пользователя есть login, email, hash и другие поля (поля password – нет!). Для регистрации пользователя я создаю (генерирую) модель типа Active Record.
Во вьюхе есть форма, куда пользователь вводит логин, пароль, повтор пароля, выбирает чекбосы с нужными ему типами подписки. Соответственно, в контроллер приходит массив этих параметров.
Вопрос первый в том, где генерировать хэш и соль. Можно прямо в контроллере, можно в методе beforeSave() модели User.
Плюсы генерации в контроллере: мы можем задать правила в rules() модели для всех полей (в данном случае хэш и соль генерируются нами, но в других подобных случаях – это не так).
Плюсы генерации в модели: контроллер невероятно тонкий – а вроде бы это круто.
Вопрос второй в том, где делать валидацию пароля и повтора пороля, переданных пользователем? В модели их нет, а, значит, валидацию нужно делать в контроллере, но это ведь противоречит MVC?
2) Парсинг данных.
Пользователь передаёт ссылку на ресурс в контроллер. Далее должен выполняться такой алгоритм:
[list=1]
[*]Валидация ссылки. Если ссылка ведёт на неразрешенный источник, заканчиваем работу.
[*]
[list=2]
[*] Парсинг фильма.
[*] Если фильм есть в БД, ищем его ид и увеличиваем referenseCount на 1.
[*] Если фильма нет в БД, добавляет его туда, получаем ид фильма и устанавливаем полю referenseCount значение 1.
[*]Проверяем жанры нового фильма. Если каких-то жанров нет, добавляем их в БД.
[/list]
[*] Создаём запись в таблице usermovies с ид текущего пользователя и ид фильма.
[/list]
Вопрос: уместно ли выполнять такое большое количество действий в контроллере?
Второй вопрос: если все эти действия выполнять в контроллере, где делать валидацию ссылки? Опять тут же?
3) Вью модели.
Принято ли в yii обмениваться данными между контроллером и вьюхой с помощью вью моделей?
Буду очень благодарен за ответы и советы.
Спасибо!