bodruk
bodruk

Reputation: 3262

Get PUT params with Slim PHP

I searched, but I didn't find an answer. I have a RESTful API to manage a basic CRUD. I'm trying to create an update method using PUT, but I can't retrieve the params values. I'm using Postman to make the requests, my request looks like:

URL

http://localhost/api/update/987654321

Params

id = 987654321
name = John Smith
age = 35

PHP

$app = new Slim();
$app->put('/update/:id', function( $id ) use( $app ){
    var_dump([
        'id' => $id,
        'name' => $app->request->put('name'),
        'age' => $app->request->put('age')
    ]);
});

My var_dump() result is:

array(3) {
  ["id"]=>
  string(9) "987654321"
  ["name"]=>
  NULL
  ["age"]=>
  NULL
}

What is wrong? Any idea?

Upvotes: 14

Views: 11296

Answers (2)

Opanyin Stwiste
Opanyin Stwiste

Reputation: 11

$app->request->put() is returning a null value...

so u can use try $app->request->params instead

Upvotes: 1

eloibm
eloibm

Reputation: 909

I had the same problem. Firstly, I was sending PUT data with the Postman option to encode it as "form-data", that's why Slim wasn't getting the param values.

As it is explained in W3, the content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

In our case, we have to send PUT data with the Postman option "x-www-form-urlencoded" (see explanation of "application/x-www-form-urlencoded" in W3).

Screenshot of the right Postman option selected

Upvotes: 23

Related Questions