【问题标题】:Getting request parameters on Slim在 Slim 上获取请求参数
【发布时间】:2015-11-17 10:02:13
【问题描述】:

我正在尝试动态获取请求参数名称和值,但数组始终为空。这是获取路线:

$app->get('/get/profile/:id_user', function ($id_user) use ($app) {
    print_r($app->request()->params());
});

这就是我从浏览器调用它的方式:

http://localhost/get/profile/9492

这应该返回一个带有id_user => 9492的数组,但它是空的。

有什么想法吗?

【问题讨论】:

    标签: php slim


    【解决方案1】:

    注意:在试用此代码之前,请阅读更新说明。更新说明是我在此答案中的第一条评论。

    无法测试,但请尝试以下方法:

    $app->get('/get/profile/:id_user', function ($id_user) use ($app) {
        $req = $app->request();
        print_r($req->params());
    });
    

    参考文档:http://docs.slimframework.com/#Request-Method

    更新:好吧,经过一番挖掘后,params() 方法需要一个参数。如果在没有参数的情况下调用,则会引发通知。检查源代码发现,这个没有参数调用的函数返回 null。请参阅Http/Request.php 第 199 行。由于某些原因,currying 似乎也无法检索参数,因此您必须使用具有预期值的函数参数 $id_user

    【讨论】:

    • 没有结果 :( ...Array ( ) 是唯一的响应。
    • 好吧,经过一番挖掘后,params() 方法需要一个参数。如果在没有参数的情况下调用,则会引发通知。检查源代码发现,这个没有参数调用的函数返回 null。见Http/Request.php line 199。同样由于某种原因,currying 似乎也无法检索参数,因此您必须使用具有预期值的函数参数$id_user
    • 所以,没有办法动态抓取所有请求的参数。文档在这件事上写得有点含糊,但感谢您的解释!我会投票支持您的答案作为解决方案,但如果您在帖子中添加通知会很好,呵呵。
    • @andufo,当然。我添加了通知并在更新说明中添加了我的评论。感谢您指出这一点。
    • @andufo,请注意您可以使用 $app->request->get() 来检索它们。见docs.slimframework.com/#Request-Variables
    【解决方案2】:

    您可以使用以下内容:

    $app->get("/test.:format/:name",function() use ($app){
      $router = $app->router();
      print_r($router->getCurrentRoute()->getParams());
    });
    

    【讨论】:

    • 谢谢,这正是我过去半小时一直在寻找的 :)
    【解决方案3】:

    也是配置问题。

    试试

    try_files $uri $uri/ /index.php?$query_string;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-24
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      相关资源
      最近更新 更多