Php Yii:如何向URL添加常规参数

Php Yii:如何向URL添加常规参数,php,yii,url-rewriting,url-routing,Php,Yii,Url Rewriting,Url Routing,我想在URL中添加一些通用参数。例如: http://example.com/user/join?ref=bazuka_007 或 如果我想跟踪用户从哪里来到我的网站或自动认证他们 如何组织两件事: 混合美化的URL和参数 处理代码中的通用参数 对于第一个示例,您可以如下指定路由器规则: 'rules'=>array( ... array('user/index/username/<username>', 'pattern'=>'user/<us

我想在URL中添加一些通用参数。例如:

http://example.com/user/join?ref=bazuka_007

如果我想跟踪用户从哪里来到我的网站或自动认证他们

如何组织两件事:

  • 混合美化的URL和参数
  • 处理代码中的通用参数

对于第一个示例,您可以如下指定路由器规则:

'rules'=>array(
    ...
    array('user/index/username/<username>', 'pattern'=>'user/<username:\w+>*'),
    ...
)
第二个例子可以与第一个类比

UPD:

您还可以指定更常见的规则:

'rules'=>array(
    ...
    array('<controller>/index/param/<param>', 'pattern'=>'<controller:\w+>/<param:\.+>*'),
    ...
)
“规则”=>数组(
...
数组('/index/param/','pattern'=>'/*'),
...
)
UPD2:

我想如果您想为所有请求执行公共逻辑,那么您应该在基本控制器中实现该逻辑,并从中扩展所有控制器


您还可以在每个控制器中输入元素
beforeAction()
方法,该方法将在控制器中的每个操作之前调用。

…这意味着我必须修改现场的每个路由以处理相同的情况。DenisKulagin我刚刚在帖子中添加了一个答案。但是,我该如何处理常见的逻辑呢?例如,我想为我指定的每个页面将输入页面/ref保存到数据库中。beforeAction很好,但如何在这个通用逻辑处理程序中获取自定义参数(例如ref,simpleAuthToken)?@DenisKulagin与通常的get参数(
$\u get['simpleAuthToken']
)或
Yii::app()->request->getParam('simpleAuthToken')
。斜杠之间的每一对url路径都将被添加,以获取key=>value形式的参数。例如:
http://example.com/user/join/ref/bazuka_007/var_2/val_2/var_3/val_3
在该请求中,将创建以下get参数:
'ref'=>'bazuka_007','var_2'=>'val_2','var_3'=>'val_3'
$_GET[username] = 'join';
$_GET[ref] = 'bazuka_007';
'rules'=>array(
    ...
    array('<controller>/index/param/<param>', 'pattern'=>'<controller:\w+>/<param:\.+>*'),
    ...
)