我尝试使用FosUserBundle函数创建API应用。
我无法改变数据传输格式,事实上,如果我发送带有这种方式构建的参数的请求,可以工作:
{"fos_user_registration_form":
{
"username":"test",
"plainPassword":
{
"first":"123456",
"second":"123456"
},
"email":"test@test.com",
"name":"test"
}
}
但是,如果我更改字符串 fos_user注册表单,例如使用字符串用户,以使其更清晰是公共API,则不再有效。
可以更改此格式吗?
谢谢大家的答案。
答案 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
最好的问候。