Cant get JSON POST data submitted via Slim
php, post, slim
Solution
Make sure to curry `$app` into the last nested route, like so:
// Pass through $app
$app->post('/test/', function () use ($app) {
You're doing it everywhere else, so I'm assuming you just overlooked it.
Problem
Im using Postman (in Chrome) to test Slim calls but cant figure out how to get any of the posted JSON data. Im submitting raw JSON: ``` {"name":"John Smith", "age":"30", "gender":"male"} ``` With Content-Type: application/json in the header via POST to: ``` http://domain/api/v1/users/post/test/ ``` Every attempt to get the JSON data gives a fatal error (see code comments below) ``` <?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(); ?> ``` What am I missing? Thanks!