1

在 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链接,我的请求也会被路由到。

我在这里做错了什么?

4

1 回答 1

0

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

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

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

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

'api/shortlist' => 'api/shortlist/<action>/<model:\w+>/*',
'api/compare' => 'api/compare/<action>/<model:\w+>/*',
于 2014-07-27T05:09:33.577 回答