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

发布于 2022-09-11 18:52:56 字数 1547 浏览 41 评论 0

问题描述

在 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 路由协议正常获取请求参数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怀中猫帐中妖 2022-09-18 18:52:56

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文