我在Yii中路由我的请求时遇到问题。以下是urlManager规则:
'rules'=>array(
array('api/index', 'pattern'=>'api/<model:\w+>/<id:\d+>/*', 'verb'=>'GET'),
array('api/shortlist', 'pattern'=>'api/<action>/<model:\w+>/*', 'verb'=>'GET'),
array('api/compare', 'pattern'=>'api/<action>/<model:\w+>/*', 'verb'=>'GET'),
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
即使我点击api/shortlist
链接,我的请求也会被路由到api/compare
。
我在这里做错了什么?
答案 0 :(得分:0)
如您所见,shortlist
和compare
规则的模式是相同的。
因此,首先放置的规则将匹配两者,而第二个规则将永远不会运行。
您的api/compare
规则永远不会匹配/匹配,因为它上面的规则是相同的,并且会先匹配。
你应该做这样的事情来防止冲突:
'api/shortlist' => 'api/shortlist/<action>/<model:\w+>/*',
'api/compare' => 'api/compare/<action>/<model:\w+>/*',