Yii2 重定向到上一页
Posted
技术标签:
【中文标题】Yii2 重定向到上一页【英文标题】:Yii2 redirect to previous page 【发布时间】:2015-04-17 17:14:44 【问题描述】:现在我的应用程序正在使用 gridview 列出所有信息并且它也有分页。当用户单击分页号然后单击编辑然后保存时。它将用户重定向到查看页面。我想做什么将用户重定向到上一页(带有分页号的网址)。
【问题讨论】:
【参考方案1】:如果您在表单中使用html::submitButton
,并且希望被重定向到上一页,那么我建议您使用use yii\helpers\Url;
:
return $this->redirect(Url::previous('previous') ?: ['list']);
因为
return $this->redirect(Yii::$app->request->referrer);
将返回表单而不是模块列表。
【讨论】:
【参考方案2】:@Kostas 说的是真的,但我认为如果您简单地编写以下代码会更好,因为 goBack 已经考虑到 goBack HOME 的空参数。
return $this->goBack(Yii::$app->request->referrer);
我测试了它,它工作正常。
【讨论】:
【参考方案3】:您可以使用Yii::$app->request->referrer
返回用户所在的最后一页。
用法很简单:
return $this->redirect(Yii::$app->request->referrer);
您还需要考虑referrer
可以是null
:
return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl);
见the docs。
【讨论】:
第二个例子可以缩写为return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl);
但是当我们从一个访客未访问的 URL 到达时,没有获得引用 URL。我认为它可以通过返回 URL 获得,但我如何管理推荐 URL 和返回 URL。【参考方案4】:
Here 它说首先检查是否设置了referrer
是一个好习惯。
因此,如果您使用以下代码,如果您设置了 referrer,您将被重定向到最后一页;如果之前未设置返回 URL,您将被重定向到您配置的 homeUrl
。
return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));
goBack() details
redirect details
【讨论】:
以上是关于Yii2 重定向到上一页的主要内容,如果未能解决你的问题,请参考以下文章