我不清楚如何使用带有FOSRestBundle的Symfony表单组件来创建用于创建资源的POST端点。
以下是我在POST控制器操作中的内容:
//GuestController.php
public function cpostAction(Request $request)
{
$data = json_decode($request->getContent(), true);
$entity = new Guest();
$form = $this->createForm(GuestType::class, $entity);
$form->submit($data);
if ($form->isValid()) {
$dm = $this->getDoctrine()->getManager();
$dm->persist($entity);
$dm->flush();
return new Response('', Response::HTTP_CREATED);
}
return $form;
}
我的工作是:
application/json
)发送/guests
POST请求; Guest
); json_decode
请求正文,然后再将其提交到表单($form->submit($data)
)。我提出的问题:
json_decode()
Request
内容?这个过程可以通过FosRestBundle以某种方式实现自动化吗?application/x-www-form-urlencoded
数据发送到控制器操作并通过以下方式处理:-
$form->handleRequest($request)
if ($form->isValid()) {
...
}
...
我无法完成上述工作,表单实例从未提交过。
ParamConverter
直接与验证器一起使用是否有任何优势 - 这是一个想法:-
/**
* @ParamConverter("guest", converter="fos_rest.request_body")
*/
public function cpostAction(Guest $guest)
{
$violations = $this->getValidator()->validate($guest);
if ($violations->count()) {
return $this->view($violations, Codes::HTTP_BAD_REQUEST);
}
$this->persistAndFlush($guest);
return ....;
}
谢谢!
答案 0 :(得分:0)
我正在尝试对你做同样的事情,很难找到这个主题的答案。我认为今天开发适用于移动应用的api rest网站是一个重要的主题。反正!
请在下面找到我的答案:
在将请求内容提交到表单之前,我是否真的必须手动使用json_decode()?
不,我得到这样的数据 $ params = $ request-> query-> all(); $用户> setUsername($ PARAMS [ 'fos_user_registration_form'] [ '用户名']);
这个过程可以通过FosRestBundle以某种方式自动化吗?
我不这么认为。
是否可以将application / x-www-form-urlencoded数据发送到控制器操作并使用
进行处理
是的,但我正在尝试处理我的表格,我不能这样做。
与使用ParamConverter和验证器一起使用表单组件是否有任何优势 - 这就是想法:
没有
我猜我是否打算只注册用户:
$ userManager = $ this-> get('fos_user.user_manager');
并手动控制我。
我在这里发布了一个问题,我在等待: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/2405
您是否设法获得更多信息?