现在让我猜猜你们在想什么..。“在路径信息被处理之前修改它是个坏主意。你为什么要这么做?这是恶意行为!!”
我正试图获得我以前的网址的controller/action表示;通过Yii::app()->getRequest()->getUrlReferrer()获得。
Yii 2期,可以设置新请求的路径信息并解析该请求。然而,从Yii 1源来看,处理路径信息的唯一方法是getPathInfo()和decodePathInfo()。如果有一个setPathInfo(),我可以使用它和urlManager->parseUrl()来实现这一点。但我们不允许设置路径信息。
我如何才能得到我以前的网址的controller/action表示?
发布于 2016-03-21 11:32:00
Yii不允许CHttpRequest对象在路由解析过程中存活。在创建应用程序之后,创建一个新的CHttpRequest是不可能的。
我意识到做这件事的唯一方法是香草Yii::app()->controller->action对象。由此,我可以获得特定URL的模块、控制器和操作ID。
发布于 2015-08-28 13:35:51
使用PHP可以很好地找到以前的位置,但是会给出不完整的$_SERVER['HTTP_REFERER']。
你可以在YII1.0里试试这个方法-
如果你的网址喜欢- www.domain.com?r=site/page
if(isset($_REQUEST['r']) && !empty($_REQUEST['r'])){
$previous_location = $_REQUEST['r'];
Yii::app()->user->setState('previous_location', $previous_location);
}另一种方式-
$controller_name = Yii::app()->controller->id;
$action_name = Yii::app()->controller->action->id;
Yii::app()->user->setState('previous_location', $controller_name.'/'.$action_name);所以你可以通过-
echo Yii::app()->user->getState('previous_location');这可能有助于你解决你的问题。
https://stackoverflow.com/questions/32271300
复制相似问题