【发布时间】:2013-12-02 03:51:26
【问题描述】:
我正在使用 Postman(在 Chrome 中)测试 Slim 调用,但不知道如何获取任何已发布的 JSON 数据。
我正在提交原始 JSON:
{"name":"John Smith", "age":"30", "gender":"male"}
在标头中使用 Content-Type: application/json
通过 POST 到:
http://domain/api/v1/users/post/test/
每次获取 JSON 数据的尝试都会出现致命错误(参见下面的代码 cmets)
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->add(new \Slim\Middleware\ContentTypes());
$app->group('/api/v1', function () use ($app) {
$app->group('/users/post', function () use ($app) {
$app->post('/test/', function () {
print_r($app->request->headers); //no errors, but no output?
echo "Hello!"; // outputs just fine
$data = $app->request()->params('name'); //Fatal error: Call to a member function request() on a non-object
$data = $app->request->getBody(); //Fatal error: Call to a member function getBody() on a non-object
$data = $app->request->post('name'); //Fatal error: Call to a member function post() on a non-object
$data = $app->request()->post(); //Fatal error: Call to a member function request() on a non-object
print_r($data);
echo $data;
});
});
});
$app->run();
?>
我错过了什么?
谢谢!
【问题讨论】:
-
尝试
var_dump($app)出现第一个致命错误的地方。也许尝试使用 $this 而不是 $app。 -
var_dump($app) 结果为 NULL
-
$this->request()->getBody(); = 致命错误:不在对象上下文中使用 $this