Я внедряю Facebook Войти с помощью HybridAuth. Я получаю профиль FB просто отлично, но меня немного смущает, что с ним делать. Я сравниваю с таблицей зарегистрированных пользователей, чтобы проверить, есть ли у меня уже электронная почта пользователя из профиля FB, если у меня есть, то логин завершается с сохраненной учетной записью, если нет, я создаю новую учетную запись пользователя и сохраняю ее в моей БД.
Дело в том, что когда я создаю нового пользователя, я вызываю метод в своем пользовательском контроллере, например так:
UserController::createUserSocialNetwork($userprofile);
Yii не позволяет мне сделать это, так как класс для файла контроллера еще не был импортирован. Я понимаю, что я могу импортировать класс контроллера в моем файле конфигурации Yii или я могу использовать Yii::app()->runController
из класса, который расширяется CUserIdentity
Лично я склоняюсь к первому, но я не совсем уверен, является ли какой-либо из них правильным подходом. Итак, мой вопрос: как мне сделать это без ущерба для основных функций Yii? Не нарушает ли импорт файла контроллера в конфигурации любое из правил разработки, которым следует Yii?
Во-первых, я настоятельно рекомендую обрабатывать создание пользователя в действии контроллера вместо UserIdentity.
если это невозможно, вы можете переместить логику в поведение контроллера или вспомогательный класс или даже в пользовательскую модель (и все эти альтернативные варианты не являются лучшей практикой проектирования).
Других решений пока нет …