Yaf 框架使用 Yaf_Route_Simple 路由协议,无法获取 param 数据是什么原因呢?

问题描述

在 Bootstrap.php 中添加了 Yaf_Route_Simple 路由协议

$router = Yaf_Dispatcher::getInstance()->getRouter();
$route = new Yaf_Route_Simple('m', 'c', 'a');
$router->addRoute("simple", $route);

请求地址为 http://localhost/?m=api&c=foo...
请求结果为:

clipboard.png
其中 RouterShutdown 钩子打印了路由之后的结果,可以看到是正常走了路由,但是
获取请求参数 print_r($this->getRequest()->getParams());返回了空数组

问题出现的环境背景及自己尝试过哪些方法

通过 assemble函数生成的 uri 尝试访问也失败了

var_dump($router->getRoute("simple")->assemble(array(":m"=>"api",":c"=>"foo",":a"=>"test"),array("key"=>"value")));

后来使用getQuery()方法拿到了数据,但是还是有疑问 getParams()为何是空

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
nginx 相关配置

if (!-e $request_filename) {
    rewrite ^/(.*)  /index.php?$1 last;
}
location / {
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass php_processes;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

通过 Yaf_Route_Simple 路由协议正常获取请求参数

阅读 2.9k
1 个回答
✓ 已被采纳新手上路,请多包涵

http://localhost/?m=api&c=foo&a=test&key=value
这种请求方式是 queryString 的方式,所以需要通过 getQuery()的方法去拿数据
http://localhost//api/foo/test/key/value
这种请求方式是 pathInfo 的方式,可以通过 getParams()的方法拿到数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题