'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'gii'=>'gii',
'gii/<controller:\w+>'=>'gii/<controller>',
'gii/<controller:\w+>/<action:\w+>'=>'gii/<controller>/<action>',
'<controller:\w+>/<action:\w+>/<param:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<controller:\w+>'=>'<controller>/index',
),
'showScriptName'=>false,
这些是我申请的规则。
如果我这样做:
http://something.dev/experience/listByColor/Red
我获得了红色的所有经验。
actionListByColor($color);
这很有效。
我希望用户能够这样做:
http://something.dev/experience/color/Red
我尝试过这些规则:
'experience/color/'=>'experience/listByColor/'
但我总是得到:
系统无法找到所请求的操作“颜色”。
我该如何做到这一点?
似乎urlFormat不适合这个,因为它似乎期望=>
左侧的有效路径,在这种情况下,我们没有任何有效路径。
别无他法?
答案 0 :(得分:1)
你忘记了params / id部分。使用以下适当的规则:
'experience/color/<param:\w+>'=>'experience/listByColor/'
'experience/color/<id:\d+>'=>'experience/listByColor/'
'experience/color/<color>'=>'experience/listByColor/'