我正在创建一个带有backbone.js和symfony2的单页应用程序,我需要你对一件事的看法。
例如,请参阅此创建用户操作。请求由骨干模型(model.save)发送,我想检查服务器端的值。我的问题非常简单,使用symfony2表单验证进行此检查是否相关?
/**
*
* @Route("/user", defaults={"_format"="json"}, name="create_user")
* @Method({"POST"})
*/
public function createUserAction() {
$request = $this->get('request');
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
}
$entity = new User();
$form = $this->createForm(new UserType(), $entity);
$form->bind($request);
...
}
如果是,我该怎么做? Backbone发送JSON请求体,而Symfony2表单对象的绑定方法只接受URL编码。我已经尝试过使用urlencode功能但没有成功。
答案 0 :(得分:0)
是的,它是相关的,你应该总是做服务器端验证。我的问题是你的内容变量来自哪里?我不认为它是在上面的代码中分配的。
答案 1 :(得分:0)
您可以使用FOSRestBundle。它有一个“正文监听器”,它将解码请求体,并允许您将表单绑定到具有json体的请求。
您可以在FOSRestBundle documentation中了解有关此功能的更多信息。