Yii无法将请求路由到不同的路径

时间:2014-07-26 20:56:14

标签: php yii url-mapping yii-routing

我在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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

如您所见,shortlistcompare规则的模式是相同的。

因此,首先放置的规则将匹配两者,而第二个规则将永远不会运行。

您的api/compare规则永远不会匹配/匹配,因为它上面的规则是相同的,并且会先匹配。

你应该做这样的事情来防止冲突:

'api/shortlist' => 'api/shortlist/<action>/<model:\w+>/*',
'api/compare' => 'api/compare/<action>/<model:\w+>/*',