我遵循此tut(副本this)为创建命名参数的自定义规则。在我的规则数组中,我添加了2个上面的行来解析向前和向后Assortment[groupCategory]
参数。通过urlManager规则美化网址只能用一种方法
'urlManager'=>array(
'showScriptName'=>false,
'urlFormat'=>'path',
'rules'=>array(
'assortment/<Assortment[groupCategory]:\d+>'=> 'assortment/index',
'assortment/<Assortment%5BgroupCategory%5D:\d+>'=> 'assortment/index',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
这工作正向: 与http://tarex.ru/assortment/index/Assortment[groupCategory]/1
的YII识别Assortment[groupCategory]
作为GET参数等于1
但是,如果从表单我请求
http://tarex.ru/assortment/index?Assortment[groupCategory]=2
或
http://tarex.ru/assortment/index?Assortment%5BgroupCategory%5D=2
它不会将其转换为人类可读的ULR,像这样:
http://tarex.ru/assortment/index/Assortment[groupCategory]/2
为什么?啧啧,这是双向网址管理器。
另一方面,当使用路径发布/索引和参数标签创建URL时,urlManager组件也将使用此规则生成所需的URL /index.php/posts/yii。出于这个原因,我们说urlManager是一个双向URL管理器。
我可以使用'Assortment [groupCategory]',复合一,作为参数而不是'groupCategory'吗? – 2014-11-22 09:53:35
恐怕这个'assortment [groupCategory]'只能“单向”工作。因为将值分配给您分配给数组成员的'$ Assortment [groupCategory]'时。你知道,括号不能用于PHP变量名。什么是使用它们的原因? – 2014-11-22 10:06:43
或者你可以试试'echo Yii :: app() - > controller-> createUrl('assortment/index',array('Assortment [groupCategory]'=> 1));' :) – 2014-11-22 10:07:26