如何更改FosUserBundle表单中的数据接收格式?

时间:2016-03-30 09:02:56

标签: php symfony fosuserbundle

我尝试使用FosUserBundle函数创建API应用。

我无法改变数据传输格式,事实上,如果我发送带有这种方式构建的参数的请求,可以工作:

{"fos_user_registration_form":
    {
        "username":"test",
        "plainPassword":
                           {
                               "first":"123456",
                               "second":"123456"
                           },
        "email":"test@test.com",
        "name":"test"
     }
}

但是,如果我更改字符串 fos_user注册表单,例如使用字符串用户,以使其更清晰是公共API,则不再有效。

可以更改此格式吗?

谢谢大家的答案。

2 个答案:

答案 0 :(得分:0)

我认为你应该创建另一个处理所需信息的动作(休息控制器/动作),这将是:

{
        "username":"test",
        "plainPassword": "123456",
        "email":"test@test.com",
        "name":"test"
}

在那里,您可以使用表单手动处理验证,并使用管理器保存。

我没有关于如何操作的详细过程,但您基本上可以使用fos_user在DI容器上注册的服务,例如:

fos_user.registration.form.factory FOS \ UserBundle \ Form \ Factory \ FormFactory
  fos_user.registration.form.type FOS \ UserBundle \ Form \ Type \ RegistrationFormType   fos_user.user_manager FOS \ UserBundle \ Doctrine \ UserManager

这基本上允许您进行必要的所有验证,但是从最终API用户自定义请求正文,再加上您有更多控制权并且在更新时是安全的。

答案 1 :(得分:0)

我终于找到了解决问题的方法!

表单选项下,FosUserBundle配置中有一个名为 name 的选项。

我在我的配置下面发布以便更好地理解(在这种情况下我想更改表单注册名称):

fos_user:
db_driver: orm
firewall_name: login
user_class: SB\UserBundle\Entity\User
registration:
    form:
        name: user

最好的问候。