yiiframework多个可选参数RESTful方式

时间:2012-10-24 20:05:50

标签: yii restful-url

我有一个查询界面,允许说4个可能的字段来查询,姓名,分娩日,占星符号和生日状态。用户可以为这些字段中的任何一个提供值。我正在使用AngularJS(这里是无关紧要的)和YiiFramework(材料)。

我已经看到了与此类似的问题的答案,但在大多数情况下,人们最终会使用查询字符串参数。我可以在我的urlManager中考虑到这一点,但更愿意以“正确的”RESTful方式执行此操作。我已经看到了如何执行此操作的示例:

/myservice/index.php/names/jones?birthyears=&signs=leo&birthstates=maine - 意味着他们没有提供分娩日

我想通过跳过空白值的路径完全做到这一点。这是一种合理的方法:

/myservice/index.php/api/modelname/names/jones/birthyears//signs/leo/birthstates/maine

如果是这样,那么我正在努力使用urlManager模式

array('api / find','pattern'=>'api /< model:\ w +> / names /< names :( | \ w +)> / birthyears /< birthyears: (| \ d {4})> / signs /< signs:(| \ w +)> / birthstates /< birthstates:(| \ w +)>','verb'=>'GET')

当我通过上述路径时,我没有得到预期的分辨率。我相信有更好的方法来处理这个

1 个答案:

答案 0 :(得分:0)

我在这里测试了它并且有效。

您如何设置urlManager的参数?

urlFormat属性设置为'path'?

'urlManager' => array(
    'urlFormat' => 'path', // You have to leave it like that.
 //   'urlSuffix' => '.html',
    'showScriptName' => false,
    'caseSensitive' => true,
    'useStrictParsing' => true,
    'rules' => array(
       array('api/find', 'pattern'=>'<model:\w+>/names/<names:(|\w+)>/birthyears/<birthyears:(|\d{4})>/signs/<signs:(|\w+)>/birthstates/<birthstates:(|\w+)>', 'verb'=>'GET'),
       // Other rules here
    ),
),
相关问题