【问题标题】:get Current request referer URL and parse it获取当前请求引用 URL 并解析它
【发布时间】:2013-10-03 06:47:46
【问题描述】:

我有一个视图(网格),它被用作 rendepatial。此渲染部分网格用于两个操作。

<div id="activities"><?php echo $this->renderPartial('grid', array('model'=>$model)); ?></div>

我需要知道如何检查现在请求的操作?我需要停止从 yii 生成的一些脚本,并在操作为“默认/索引/”时添加一些脚本(我的意思是调用来自默认/索引/)这也可以通过这种方式调用...搜索/默认/ index/area/act?query=

操作 A - http://mylocalurl.com/ijob-css/index.php/search/default/index/area/act?query=

操作 B - http://mylocalurl.com/ijob-css/index.php/activities/default/index/

对于操作 b,我只需要添加一些脚本并想知道如何在 yii 中完成?

在 yii 中有类似的东西吗? if(yii-&gt;app-&gt;getRquest == 'action B')

编辑 1

我试过这样,

echo Yii::app()->controller->action->id . " - " . Yii::app()->controller->id . " - " . Yii::app()->controller->module->id;

它从两个操作中返回 //sessionIndex - default - activities

但我想做的是,用户是从哪里来到这条路的?他的最后一个网址。

所以我可以轻松地跟踪天气它的动作 1 或动作 2

编辑 2

也试过这种方式,回显Yii::app()-&gt;user-&gt;returnUrl;

但它只打印 - /ijob-css/index.php

编辑 3

这样做但需要知道有没有更好的方法来获得它? $_SERVER['HTTP_REFERER'];这也会像这样http://mylocalurl.com/ijob-css/index.php/search/default/index/area/act?query=

重新调整整个网址

但我只需要 "search/default/index/area/act?query=" 实际上模型 id 甚至可以单独使用 "search"

【问题讨论】:

  • 之前的url可以从Yii::app()->request->getUrlReferrer()中获取

标签: php yii


【解决方案1】:

要获取操作 ID,请使用:

Yii::app()->controller->action->id

控制器类似:

Yii::app()->controller->id

对于模块使用:

Yii::app()->controller->module->id

你也可以使用:

Yii::app()->request->pathInfo

对于 Yii 预处理的路径信息

【讨论】:

  • 不。这不是我想要的。它像这样返回... echo Yii::app()->controller->action->id 。 “——”。 Yii::app()->controller->id 。 “——”。 Yii::app()->控制器->模块->id; //sessionIndex - 默认 - 活动
  • 你可以使用Yii::app()-&gt;request-&gt;urlReferrer,它实际上返回$_SERVER['HTTP_REFERER']。然而,这看起来真的很草率,根据referer采取samoe行动,也许可以用来突出谷歌搜索词。
  • 我可以只获取从 Yii::app()->request->urlReferrer 返回的模型->id 吗?
  • 理论上你可以使用Yii::app()-&gt;urlManager-&gt;parseUrl(),但这有点问题,因为CUrlManagerparseUrl方法需要请求对象作为参数,并且总是使用当前url。
【解决方案2】:
$route = Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest());
echo $route;

但是模块,控制器,动作可以删除,我建议给网格添加参数

$this->renderPartial('grid', compact(
    'model',
    'flag'
));
//grid
switch($flag) {
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 2013-12-03
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多