I am having a hard time decoding json input in laravel .. am building a Restful API and when i send post data using RestClient and then die and dump in laravel i got
object(Symfony\Component\HttpFoundation\ParameterBag)#205 (1) {
["parameters":protected]=>
array(6) {
["firstName"]=>
string(8) "John"
["lastName"]=>
string(7) "Doe"
["bloodGroup"]=>
string(2) "B+"
["phone"]=>
string(8) "+9999999"
["address"]=>
string(8) "Somecity"
["symptoms"]=>
string(3) "Bla"
}
}
Now i have tied to access the data using
$data = Input::json();
echo $data->firstName;
that does not work .. tried to convert it to array and then access
like $data['firstName'] does not work .
array(1) {
["*parameters"] =>
array(6) {
["firstName"]=>
string(8) "John"
["lastName"]=>
string(7) "Doe"
["bloodGroup"]=>
string(2) "B+"
["phone"]=>
string(8) "+9999999"
["address"]=>
string(8) "Somecity"
["symptoms"]=>
string(3) "Bla"
}
}
i want to decode the data then save it to db, Here is a tutorial building similar App ..
I have tried the post_index() method explained here but no luck .
http://maxoffsky.com/maxoffsky-blog/building-restful-api-in-laravel-part-2-design-api-controller/
You can use ->get() to access properties from a Symfony\Component\HttpFoundation\ParameterBag response.
$input = Input::json();
$input->get('firstName')
You can also get all inputs as an array and then type cast it to an object with (object). Note that this will throw an error if your property doesn't exists, so if I where you, I would use the ->get() method mentioned above.
$input = (object)Input::all();
$input->firstName;
Based on my experiment
If you are sending an array of multiple objects like the following example from the Javascript using JSON
[{crop_id: 1, test_id: 6},{crop_id: 1, test_id: 7},{crop_id: 1, test_id: 8}]
You need to use Input::json()->all() function in PHP.
$arr = Input::json()->all();
$crop_id = $arr[0]['crop_id'];
$test_id = $arr[0]['test_id'];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With