我是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时:
{“响应”:“200”,“主体”:“名为”}NULLNULL的JSON API
该路由正在工作(如预期的那样),但我无法到达$do、$entity、$arg[]。预期产出将是:
{"response":"200","body":"JSON名为“}killusall
我不记得我看到Slim使用这种控制器的原始页面,所以请原谅这个问题是否愚蠢。提前感谢!
发布于 2014-03-28 20:39:35
根据这些注释,有几种方法可以获得RESTful URI参数。第一种方法是参考这个评论,#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" }
}第二种方法是根据这个评论,#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);
});因此,基本上我将坚持第一种方法,它更优雅,更面向框架(它在幕后处理)。
https://stackoverflow.com/questions/22701484
复制相似问题