我使用的是SLIM 2.0.0
是否可以在GET中使用 - > params()?
在下面的例子中
curl -d "param1=hello¶m2=world" http://localhost/foo
它会打印:helloworld CORRECT !! 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');
}
?>
答案 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