首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改请求路径信息

问修改请求路径信息
EN

Stack Overflow用户
提问于 2015-08-28 12:39:15
回答 2查看 134关注 0票数 0

现在让我猜猜你们在想什么..。“在路径信息被处理之前修改它是个坏主意。你为什么要这么做?这是恶意行为!!”

我正试图获得我以前的网址的controller/action表示;通过Yii::app()->getRequest()->getUrlReferrer()获得。

Yii 2期,可以设置新请求的路径信息并解析该请求。然而,从Yii 1源来看,处理路径信息的唯一方法是getPathInfo()和decodePathInfo()。如果有一个setPathInfo(),我可以使用它和urlManager->parseUrl()来实现这一点。但我们不允许设置路径信息。

我如何才能得到我以前的网址的controller/action表示?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 11:32:00

Yii不允许CHttpRequest对象在路由解析过程中存活。在创建应用程序之后,创建一个新的CHttpRequest是不可能的。

我意识到做这件事的唯一方法是香草Yii::app()->controller->action对象。由此,我可以获得特定URL的模块、控制器和操作ID。

票数 0
EN

Stack Overflow用户

发布于 2015-08-28 13:35:51

使用PHP可以很好地找到以前的位置,但是会给出不完整的$_SERVER['HTTP_REFERER']。

你可以在YII1.0里试试这个方法-

如果你的网址喜欢- www.domain.com?r=site/page

代码语言:javascript
复制
if(isset($_REQUEST['r']) && !empty($_REQUEST['r'])){
    $previous_location = $_REQUEST['r'];
    Yii::app()->user->setState('previous_location', $previous_location);
}

另一种方式-

代码语言:javascript
复制
$controller_name = Yii::app()->controller->id;
$action_name = Yii::app()->controller->action->id;

Yii::app()->user->setState('previous_location', $controller_name.'/'.$action_name);

所以你可以通过-

代码语言:javascript
复制
echo Yii::app()->user->getState('previous_location');

这可能有助于你解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32271300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档