我正在使用Yii
而我遇到的问题是Yii::app()->user->returnUrl
。它总是让我回到index.php
页面。
如何将其值设置为请求当前页面的页面,因为我不知道用户访问当前页面的页面是什么?
答案 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->urlReferrer
或Yii::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));
}
}