Slim Framework 2.0.0无法使用 - > params()与GET

时间:2012-09-13 14:04:57

标签: php get slim

我使用的是SLIM 2.0.0

是否可以在GET中使用 - > params()?

在下面的例子中

  • 如果我通过POST调用它:curl -d "param1=hello&param2=world" http://localhost/foo它会打印:helloworld CORRECT !!
  • 如果我通过GET调用它:http://localhost/foo/hello/world它打印:没有! < - 错误!!

为什么?

<?php
require 'Slim/Slim.php';

\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app -> get('/foo/:param1/:param2', 'foo');
$app -> post('/foo', 'foo');
$app -> run();

function foo() {
    $request = \Slim\Slim::getInstance() -> request();
    echo $request -> params('param1');
    echo $request -> params('param2');
}
?>

1 个答案:

答案 0 :(得分:4)

解决了! 在文档页面Request Variables - Slim Framework Documentation中,我读到了这个:

HTTP请求可能具有关联变量(不要与路由变量混淆)。使用当前HTTP请求发送的GET,POST或PUT变量通过Slim应用程序的请求对象公开。

如果要在不考虑其类型的情况下快速获取请求变量值,请使用请求对象的params()方法:

<?php
$req = $app->request();
$paramValue = $req->params('paramName');

params()方法首先搜索PUT变量,然后是POST变量,然后是GET变量。如果未找到变量,则返回null。如果您只想搜索特定类型的变量,则可以改为使用这些方法:

<?php
// Get request object
$req = $app->request();

//GET variable
$paramValue = $req->get('paramName');

//POST variable
$paramValue = $req->post('paramName');

所以:

关键是“HTTP请求可能有关联的变量(不要与路由变量混淆)。”

http://domain.com/foo/hello/wold?name=brian

在上面的URI中,路径变量/参数是从'/ foo / hello / world'部分读取的。请求GET变量从查询字符串('name = brian')读取,可以通过$ app-&gt; request() - &gt; get('name')或$ app-&gt; request() - &gt ; PARAMS( '姓名')

请求POST变量从请求正文中解析,可以访问$ app-&gt; request() - &gt; post('param1')或$ app-&gt; request() - &gt; params( '参数1')。

感谢Brian Nesbitt