【问题标题】:Slim Framework get REST valuesSlim 框架获取 REST 值
【发布时间】:2014-03-27 23:40:31
【问题描述】:

我是 Slim 的新手,现在我有点迷失如何从 RESTful 请求中获取参数。这是代码的相关部分:

//.....

$app->get('/api/json(/:do(/:entity(/:arg+)))', 
        "\Slim\Controller\API:jsonAction");
// .....

# Controller


<?php
namespace Slim\Controller;

use Slim\Slim;


class API {

    public function jsonAction()
    {
        print json_encode([
            "response" => "200", 
            "body" => "JSON API called"
        ]);

        var_dump(Slim::getInstance()->request->params('do'));
        var_dump(Slim::getInstance()->request->params('entity'));
        var_dump(Slim::getInstance()->request->params('arg')[0]);
    }
}

输出,当我尝试http://localhost/index.php/api/json/kill/us/all:

{"response":"200","body":"JSON API 调用"}NULLNULL

路线正常(如预期),但我无法到达$do、$entity、$arg[]。预期的输出将是:

{"response":"200","body":"JSON API 调用"}killusall

我不记得在最初的页面上看到这种控制器在 Slim 中的使用情况,如果这个问题很愚蠢,请见谅。提前致谢!

【问题讨论】:

    标签: php json rest slim


    【解决方案1】:

    根据这些 cmets,有几种方法可以获取 RESTful URI 参数。 第一种方法是参考this comment, #15:

    #In the same controller
    
    public function jsonAction($do = null, $entity = null, $argv = null)
    {
        print json_encode([
            "response" => "200", 
            "body" => "JSON API called"
        ]);
    
        var_dump($do); // Output string(4) "kill"
        var_dump($entity); // Output string(2) "us"
        var_dump($arg[0]); // Output array(1) { [0]=> string(3) "all" }
    }
    

    第二种方法是根据this comment, #18:

    # When we define the route
    $app->get('/api/json(/:do(/:entity(/:arg+)))', 
            "\Slim\Controller\API:jsonAction")->setParams(
        array($do, $entity, $arg)
    ); 
    

    还有第三种做事方式,我觉得有点难看..再看#15评论:

    $app->get('/hello(/:param)', 
        function ($do = NULL, $entity = NULL, $arg = NULL) use($app) {
            (new \controller\sayHello($app))->index($do, $entity, $arg);
    });
    

    所以基本上我会坚持第一种方法,它更优雅,更面向框架(它在幕后处理它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多