FOSRestBundle骆驼键规范化器无法正常工作

时间:2014-09-11 17:53:41

标签: rest symfony fosrestbundle

这是我的配置文件:

// app/config/config.yml
fos_rest:
    body_listener:
        array_normalizer: fos_rest.normalizer.camel_keys

我使用的是最新版本的FOSRestBundle:

// composer.json
"friendsofsymfony/rest-bundle": "dev-master"

这些是我的帖子参数:

// Post parameters
"first_name": "First name",
"last_name": "Last name",
"phone": "Phone"

这是我的控制者:

/**
 * @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;
}

问题:

请求发布参数不是驼峰式的。我得到first_name,last_name,phone而不是firstName,lastName,phone。我和https://florian.voutzinos.com/blog/handling-camelcase-with-fosrestbundle/的做法相同。但是,它没有用。我错过了什么吗?有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:6)

这是JMSSerializer重命名您的字段名称。尝试改变它的命名策略。将其放入您的服务配置文件

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'

答案 1 :(得分:0)

您的配置中是否有拼写错误?您在array_normalizer之前错过了四个空格,因为它是body_listener

的属性
fos_rest:
    body_listener:
        array_normalizer: fos_rest.normalizer.camel_keys