如何在yii中设置returnUrl值

时间:2013-11-30 10:46:39

标签: php yii returnurl

我正在使用Yii而我遇到的问题是Yii::app()->user->returnUrl 。它总是让我回到index.php页面。

如何将其值设置为请求当前页面的页面,因为我不知道用户访问当前页面的页面是什么?

7 个答案:

答案 0 :(得分:7)

您可以使用Yii::app()->request->urlReferrer查看用户来自何处。

public function beforeAction()
{
    Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer;
    return parent::beforeAction();
}

请注意,如果用户来自第三方网站,则会将其重定向到您的网站。

答案 1 :(得分:3)

没有:Yii::app()->user->urlReferrer

应该是:Yii::app()->request->urlReferrerYii::app()->request->requestUri (current page)

所以试试这个:

Yii::app()->user->returnUrl = Yii::app()->user->urlReferrer;

或者这个(我个人更喜欢):

Yii::app()->user->returnUrl = Yii::app()->request->requestUri;

答案 2 :(得分:3)

对于那些使用Yii2的人

Yii::$app->user->returnUrl = Yii::$app->request->referrer;

答案 3 :(得分:2)

我创建了一个Yii扩展来管理返回网址,您可以在此处找到它: https://github.com/cornernote/yii-return-url#yii-returnurl

这是对Yii处理它的方式的改进,因为它将返回URL存储在GET / POST数据中而不是SESSION中。这意味着如果您打开了多个标签,则每个标签都可以拥有自己的返回网址。

答案 4 :(得分:0)

你可以这样使用

$http = new CHttpRequest();
$referrer_url = $http->getUrlReferrer();
$this->redirect($referrer_url);

希望这会对你有所帮助

答案 5 :(得分:0)

您也可以这样做

Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer;
$this->redirect(Yii::app()->user->returnUrl);

答案 6 :(得分:0)

对于仍在努力返回上一页的用户:您必须在登录模型$referer中创建一个属性,并且在初始化Login模型时,请将此属性设置为{{ 1}}。您必须采用这种方式,因为提交表单后,您的引荐来源网站确实会更改为当前页面,并且由于它是Yii::$app->request->referrer,它将使您返回索引操作。因此,传递返回URL的方法是将其存储在表单的隐藏字段中,因此,在提交表单时,您已加载了此URL,并且可以执行操作以返回null。 这是代码:

登录模型:

$this->goBack($form->referer ? $form->referer : null)

控制器动作:

public $referer;

查看login.php:

$model = new Login();
$model->referer = Yii::$app->request->referrer;
...
if($model->load(Yii::$app->request->post()){
    ...
    if($model->save()){
        return $this->goBack((($model->referer) ? $model->referer : null));
    }
}