2014-11-10 4 views
0

Я внедряю Facebook Login с HybridAuth. Я получаю профиль FB просто отлично, но я немного смущен относительно того, что с ним делать. Я сравниваю себя с моей зарегистрированной таблицей пользователей, чтобы проверить, есть ли у меня уже электронная почта пользователя из профиля FB, если у меня есть, то регистрация завершается с сохраненной учетной записью, если нет, я создаю новую учетную запись пользователя и сохраняю ее в моей БД. Дело в том, когда я создаю нового пользователя я вызвать метод в мой контроллер пользователя, например:Вызов метода контроллера из CUserIdentity

UserController::createUserSocialNetwork($userprofile); 

Yii не позволяет мне сделать это как класс для файла контроллера не были импортированы еще. Я понимаю, что я могу импортировать класс контроллера в свой конфигурационный файл Yii, или я могу использовать Yii::app()->runController из класса, который расширяет CUserIdentity, лично я склоняюсь к первому, но я не совсем уверен, что любой из них является правильным подходом , Поэтому мой вопрос: как мне это сделать без ущерба для основных функций Yii? Импортирует файл контроллера в конфигурацию, нарушая любые правила проектирования, которые следует Yii?

+0

Можете ли вы переместить логику из 'UserController :: createUserSocialNetwork' в модель« Пользователь »и вызвать« UserModel :: createUserSocialNetwork »как из« UserController :: createUserSocialNetwork », так и из вашего сценария входа? – Stu

+1

Почему вы обрабатываете создание пользователя в пользовательском удостоверении в первую очередь? разве вы не должны обрабатывать его внутри действия контроллера? – osmancode

+0

Я бы изменил дизайн своего приложения и переместил эту логику в модель пользователя (не из лучших практик) или создайте вспомогательный класс – osmancode

ответ

0

Во-первых, я настоятельно рекомендую обработать создание пользователя в действии Controller вместо UserIdentity. Если это невозможно, вы можете переместить логику в поведение контроллера или вспомогательный класс или даже в пользовательскую модель (и все эти альтернативные варианты не являются лучшей практикой проектирования).

Смежные вопросы