Функции в Yii returnurl в
Привет, ребята у меня есть этот код в главном.файл конфигурации php:
'components' => array(
'[.........]',
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
'autoRenewCookie' => true,
'returnUrl' => 'http://stackoverflow.com',
)
);
моя проблема в том, что id не перенаправляет пользователя наhttp://stackoverflow.com после входа в систему, Можете ли вы мне помочь?
UserController.на PHP :
public function actionLogin()
{
if (!Yii::app()->user->isGuest){
$this->redirect('/user/index');
return;
}
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
}
// display the login form
$this->render('login',array('model'=>$model));
}
3 ответов
Я нашел решение для моей проблемы. Я добавил Эти строки кода в login.php поэтому после входа пользователя он перенаправит на предыдущую страницу:
if (Yii::app()->request->urlReferrer != 'http://www.example.com/user/login' &&
Yii::app()->request->urlReferrer != 'http://www.example.com/user/register')
{
Yii::app()->user->setReturnUrl(Yii::app()->request->urlReferrer);
}
попробуйте это, чтобы отслеживать последний посещенный действительный url:
добавить к конфигурации:
'preload' => array(
// preloading 'loginReturnUrlTracker' component to track the current return url that users should be redirected to after login
'loginReturnUrlTracker'
),
'components' => array(
'loginReturnUrlTracker' => array(
'class' => 'application.components.LoginReturnUrlTracker',
),
...
),
поместите этот файл в components / LoginReturnUrlTracker.на PHP:
<?php
class LoginReturnUrlTracker extends CApplicationComponent
{
public function init()
{
parent::init();
$action = Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest());
// Certain actions should not be returned to after login
if ($action == "site/error") {
return true;
}
if ($action == "site/logout") {
return true;
}
if ($action == "site/login") {
return true;
}
// Keep track of the most recently visited valid url
Yii::app()->user->returnUrl = Yii::app()->request->url;
}
}
Yii перезаписывает этот url-адрес возврата, который установлен в файле конфигурации.
вы можете определить этот url-адрес возврата в params или создать его с помощью функции createUrl.