Yii URL模式问题


Yii URL pattern issue

我为使用yii的REST API构建定义了如下的url模式。

      'urlManager'=>array(
      'urlFormat'=>'path',
      'rules'=>array(
                      array('api/default/list', 'pattern'=>'api/<model:'w+>', 'verb'=>'GET'),
                      array('api/default/view', 'pattern'=>'api/<model:'w+>/<id:'d+>', 'verb'=>'GET'),
                      array('api/default/update', 'pattern'=>'api/<model:'w+>/<id:'d+>', 'verb'=>'PUT'),
                      array('api/default/delete', 'pattern'=>'api/<model:'w+>/<id:'d+>', 'verb'=>'DELETE'),
                      array('api/default/create', 'pattern'=>'api/<model:'w+>', 'verb'=>'POST'),
      '<controller:'w+>/<action:'w+>'=>'<controller>/<action>',
      ),
      ),

我现在正在尝试的是

http://example.com/RestApi/index.php/api/post?偏移=5&限制=10

上面的有效,但下面的无效。

http://example.com/RestApi/index.php/api/post/offset/5/limit/10

我怎样才能让它像第二种方式一样工作?需要对Url管理器进行哪些更改?

感谢

更新

第二种方式的错误是,

无法解析请求"api/post/offset/5/limit/10"。

你可以试试这个:

 'urlManager'=>array(
      'urlFormat'=>'path',
      'rules'=>array(
                      array('api/default/view', 'pattern'=>'api/<model:'w+>/<id:'d+>/*', 'verb'=>'GET'),
                      array('api/default/list', 'pattern'=>'api/<model:'w+>/*', 'verb'=>'GET'),
            .............
      ),
  ),

我移动了api/default/view规则以避免覆盖其他规则。