сделать вход сразу после заполнения формы
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
сделать вход сразу после заполнения формы
Посоветуйте как сделать вход сразу после заполнения формы регистрации
Re: сделать вход сразу после заполнения формы
что у вас не получилось ? после регистрации написать Yii::$app->user->login ?
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
User:caHek2x писал(а):что у вас не получилось ? после регистрации написать Yii::$app->user->login ?
Код: Выделить всё
public function afterSave($insert, $changedAttributes){
parent::afterSave($insert, $changedAttributes);
$user_last_id_insert = self::last_id_insert(\Yii::$app->db);
Yii::$app->user->login(User::findOne($user_last_id_insert));
...
Код: Выделить всё
public static function last_id_insert($connection){
$row_last_in_users = $connection->createCommand('SELECT id FROM users ORDER BY id DESC LIMIT 1')->queryOne(); //uznaem id polzovatelya kotoriitolko vstavil zapis v {users}
return $row_last_in_users['id'];
}
Re: сделать вход сразу после заполнения формы
Код: Выделить всё
public function afterSave($insert, $changedAttributes){
parent::afterSave($insert, $changedAttributes);
$user_last_id_insert = self::last_id_insert(\Yii::$app->db);
Yii::$app->user->login(User::findOne($user_last_id_insert));
а $this вам чем не устраивает ...
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
Эффект тот же Мне нужно использовать эту функцию из других местcaHek2x писал(а):это что за бред ?Код: Выделить всё
public function afterSave($insert, $changedAttributes){ parent::afterSave($insert, $changedAttributes); $user_last_id_insert = self::last_id_insert(\Yii::$app->db); Yii::$app->user->login(User::findOne($user_last_id_insert));
а $this вам чем не устраивает ...
Re: сделать вход сразу после заполнения формы
$user->save();
Yii::$app->getUser()->login(...);
Yii::$app->getUser()->login(...);
Re: сделать вход сразу после заполнения формы
это бредовая ф-ция .. .в высоко нагружеенном проэкте если паралельно ктото будет регистрироваться вы получите ид не того пользователя ...evgeniy123 писал(а):Эффект тот же Мне нужно использовать эту функцию из других местcaHek2x писал(а):это что за бред ?Код: Выделить всё
public function afterSave($insert, $changedAttributes){ parent::afterSave($insert, $changedAttributes); $user_last_id_insert = self::last_id_insert(\Yii::$app->db); Yii::$app->user->login(User::findOne($user_last_id_insert));
а $this вам чем не устраивает ...
у вас в модели уже есть ид ...
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
Думал что так как с контроллере транзакция то Ok.caHek2x писал(а):это бредовая ф-ция .. .в высоко нагружеенном проэкте если паралельно ктото будет регистрироваться вы получите ид не того пользователя ...evgeniy123 писал(а):Эффект тот же Мне нужно использовать эту функцию из других местcaHek2x писал(а):это что за бред ?Код: Выделить всё
public function afterSave($insert, $changedAttributes){ parent::afterSave($insert, $changedAttributes); $user_last_id_insert = self::last_id_insert(\Yii::$app->db); Yii::$app->user->login(User::findOne($user_last_id_insert));
а $this вам чем не устраивает ...
у вас в модели уже есть ид ...
Ага. Спасибо за совет
Последний раз редактировалось evgeniy123 2016.12.03, 16:28, всего редактировалось 1 раз.
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
zelenin писал(а):$user->save();
Yii::$app->getUser()->login(...);
Не работает так же
controller:
Код: Выделить всё
if ($model->load(Yii::$app->request->post()) AND
Yii::$app->recaptcha->verifyResponse(User::get_real_ip(),Yii::$app->request->post('g-recaptcha-response'))) {
$transaction = Yii::$app->db->beginTransaction();
// if(!$model->validate()) { Yii::warning($model->getErrors()); }
if ($user = $model->signup() AND User::validate_count_sms()) {
Yii::$app->getUser()->login($user);
.....
Код: Выделить всё
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->scenario = 'registration';
$user->attributes = $this->attributes;
$user->status = User::STATUS_NEW;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
else {
Yii::warning('oshibochka'.$user->getErrors());
}
}
return null;
}
Re: сделать вход сразу после заполнения формы
ошибки пишет ? User это ActiveRecord implements IdentityInterface ?
Re: сделать вход сразу после заполнения формы
дебажьте.evgeniy123 писал(а):zelenin писал(а):$user->save();
Yii::$app->getUser()->login(...);
Не работает так же
controller:
User:Код: Выделить всё
if ($model->load(Yii::$app->request->post()) AND Yii::$app->recaptcha->verifyResponse(User::get_real_ip(),Yii::$app->request->post('g-recaptcha-response'))) { $transaction = Yii::$app->db->beginTransaction(); // if(!$model->validate()) { Yii::warning($model->getErrors()); } if ($user = $model->signup() AND User::validate_count_sms()) { Yii::$app->getUser()->login($user); .....
Код: Выделить всё
public function signup() { if ($this->validate()) { $user = new User(); $user->scenario = 'registration'; $user->attributes = $this->attributes; $user->status = User::STATUS_NEW; $user->setPassword($this->password); $user->generateAuthKey(); if ($user->save()) { return $user; } else { Yii::warning('oshibochka'.$user->getErrors()); } } return null; }
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
в том и дело что нет ошибок. да. все пишется в бд нормально и перекидывает на home()caHek2x писал(а):ошибки пишет ? User это ActiveRecord implements IdentityInterface ?
Re: сделать вход сразу после заполнения формы
в вашем коде не видно редиректа на home - нормально это ил нет не понятноevgeniy123 писал(а):в том и дело что нет ошибок. да. все пишется в бд нормально и перекидывает на home()caHek2x писал(а):ошибки пишет ? User это ActiveRecord implements IdentityInterface ?
-
- Сообщения: 610
- Зарегистрирован: 2015.07.16, 10:50
Re: сделать вход сразу после заполнения формы
Что-то мне кажется что валидация не проходит
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
andrei.obuhovski писал(а):Что-то мне кажется что валидация не проходит
А как же он сохраняет тогда ?
Код: Выделить всё
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->scenario = 'registration';
$user->attributes = $this->attributes;
$user->status = User::STATUS_NEW;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
else {
Yii::warning('oshibochka'.$user->getErrors());
}
}
return null;
}
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
Да нормально. просто не писал полностьюzelenin писал(а):в вашем коде не видно редиректа на home - нормально это ил нет не понятноevgeniy123 писал(а):в том и дело что нет ошибок. да. все пишется в бд нормально и перекидывает на home()caHek2x писал(а):ошибки пишет ? User это ActiveRecord implements IdentityInterface ?
Код: Выделить всё
...
if ($user = $model->signup() ) {
Yii::$app->getUser()->login($user);
if ($user->createEmailConfirmToken() && $user->sendEmailConfirmationMail(Yii::$app->controller->module->getCustomMailView('confirmNewEmail'), 'new_email')) {
Yii::$app->getSession()->setFlash('success', Yii::t('users', 'CHECK_YOUR_EMAIL_FOR_FURTHER_INSTRUCTION'));
$transaction->commit();
return $this->redirect(Url::toRoute('/home'));
} else {
Yii::$app->getSession()->setFlash('error', Yii::t('users', 'CAN_NOT_SEND_EMAIL_FOR_CONFIRMATION'));
$transaction->rollBack();
};
...
-
- Сообщения: 610
- Зарегистрирован: 2015.07.16, 10:50
Re: сделать вход сразу после заполнения формы
И флешка 'success' приходит?
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: сделать вход сразу после заполнения формы
даandrei.obuhovski писал(а):И флешка 'success' приходит?
-
- Сообщения: 610
- Зарегистрирован: 2015.07.16, 10:50
Re: сделать вход сразу после заполнения формы
а напишите после строки Yii::$app->getUser()->login($user);
echo Yii::$app->getUser()->id;
die;
чтото выведет ?)
echo Yii::$app->getUser()->id;
die;
чтото выведет ?)