我正在使用Yii,我遇到的问题是Yii::app()->user->returnUrl。它总是让我返回到index.php页面。我如何将其值设置为请求当前页面的页面,因为我不知道用户是从哪个页面访问当前页面的?
Yii::app()->user->returnUrl
index.php
t1qtbnec1#
您可以使用Yii::app()->request->urlReferrer来查看用户来自何处。
Yii::app()->request->urlReferrer
public function beforeAction() { Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer; return parent::beforeAction(); }
请注意,如果用户来自第三方站点,则此操作会将他们从您的站点重定向出去。
ru9i0ody2#
对于使用Yii2的用户
Yii::$app->user->returnUrl = Yii::$app->request->referrer;
bmp9r5qi3#
世上没有这样的事:Yii::app()->user->urlReferrer它应该是:Yii::app()->request->urlReferrer或Yii::app()->request->requestUri (current page)所以试试这个:
Yii::app()->user->urlReferrer
Yii::app()->request->requestUri (current page)
Yii::app()->user->returnUrl = Yii::app()->user->urlReferrer;
或者这一条(我个人更喜欢):
Yii::app()->user->returnUrl = Yii::app()->request->requestUri;
rwqw0loc4#
我创建了一个Yii扩展来管理返回URL,你可以在这里找到它:https://github.com/cornernote/yii-return-url#yii-returnurl这比Yii的处理方式有所改进,因为它将返回url存储在GET/POST数据中而不是SESSION中。这意味着如果你打开了多个标签页,那么每个标签页都可以有自己的返回url。
sg3maiej5#
你可以这样使用
$http = new CHttpRequest(); $referrer_url = $http->getUrlReferrer(); $this->redirect($referrer_url);
希望这对你有帮助
8dtrkrch6#
你也可以这样做
Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer; $this->redirect(Yii::app()->user->returnUrl);
hts6caw37#
对于那些还在努力返回上一页的人:您必须在登录模型$referer中创建一个属性,并且在初始化Login模型时将该属性设置为Yii::$app->request->referrer。您必须这样做,因为在您提交表单后,您的引用站点会更改为当前页面,并且由于它是null,它会返回到索引操作。因此,传递返回URL的方法是将其存储在表单的隐藏字段中,这样,当您提交表单时,就会加载此URL,并执行操作以返回$this->goBack($form->referer ? $form->referer : null)。以下是代码:登录模式:
$referer
Login
Yii::$app->request->referrer
null
$this->goBack($form->referer ? $form->referer : null)
public $referer;
控制器操作:
$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)); } }
查看登录信息
<?= $form->field($model, 'referer')->hiddenInput()->label(false) ?>
7条答案
按热度按时间t1qtbnec1#
您可以使用
Yii::app()->request->urlReferrer
来查看用户来自何处。请注意,如果用户来自第三方站点,则此操作会将他们从您的站点重定向出去。
ru9i0ody2#
对于使用Yii2的用户
bmp9r5qi3#
世上没有这样的事:
Yii::app()->user->urlReferrer
它应该是:
Yii::app()->request->urlReferrer
或Yii::app()->request->requestUri (current page)
所以试试这个:
或者这一条(我个人更喜欢):
rwqw0loc4#
我创建了一个Yii扩展来管理返回URL,你可以在这里找到它:https://github.com/cornernote/yii-return-url#yii-returnurl
这比Yii的处理方式有所改进,因为它将返回url存储在GET/POST数据中而不是SESSION中。这意味着如果你打开了多个标签页,那么每个标签页都可以有自己的返回url。
sg3maiej5#
你可以这样使用
希望这对你有帮助
8dtrkrch6#
你也可以这样做
hts6caw37#
对于那些还在努力返回上一页的人:您必须在登录模型
$referer
中创建一个属性,并且在初始化Login
模型时将该属性设置为Yii::$app->request->referrer
。您必须这样做,因为在您提交表单后,您的引用站点会更改为当前页面,并且由于它是null
,它会返回到索引操作。因此,传递返回URL的方法是将其存储在表单的隐藏字段中,这样,当您提交表单时,就会加载此URL,并执行操作以返回$this->goBack($form->referer ? $form->referer : null)
。以下是代码:登录模式:
控制器操作:
查看登录信息