This is my config file:
// app/config/config.yml
fos_rest:
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
I am using the latest version of FOSRestBundle:
// composer.json
"friendsofsymfony/rest-bundle": "dev-master"
These are my post parameters:
// Post parameters
"first_name": "First name",
"last_name": "Last name",
"phone": "Phone"
This is my controller:
/**
* @ApiDoc(
* resource=true,
* description="Create a new user"
* )
*
* @View()
*/
public function postAction(Request $request)
{
$user = new User();
$form = $this->createForm(new UserType(), $user);
// Request post parameters are not camel cased
// Parameters expected: firstName, lastName, phone
// Parameters got: first_name, last_name, phone
$form->handleRequest($request);
if ($form->isValid()) {
return 'valid';
}
return $user;
}
The problem:
The request post parameters are not camel cased. I am getting first_name, last_name, phone instead of firstName, lastName, phone. I did the same as https://florian.voutzinos.com/blog/handling-camelcase-with-fosrestbundle/. But, it didn't work. Am I missing something? Any ideas? Thanks.
That's the JMSSerializer renaming your field names. Try to change it's naming strategy. Put this into your service configuration file
XML
<services>
<service id="jms_serializer.naming_strategy" class="JMS\Serializer\Naming\IdenticalPropertyNamingStrategy" />
</services>
YML
services:
jms_serializer.naming_strategy:
class: 'JMS\Serializer\Naming\IdenticalPropertyNamingStrategy'
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