我有一个查询界面,允许说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')
当我通过上述路径时,我没有得到预期的分辨率。我相信有更好的方法来处理这个
答案 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
),
),