2

我正在使用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 表单对象的 bind 方法只接受 URL 编码。我已经尝试使用 urlencode 函数但没有成功。

4

2 回答 2

0

是的,这是相关的,您应该始终进行服务器端验证。我的问题是您的内容变量来自哪里?我没有看到它在上面的代码中被分配。

于 2012-10-02T14:15:07.000 回答
0

您可以使用FOSRestBundle。它有一个“主体侦听器”,它将解码请求主体,并让您将表单与具有 json 主体的请求绑定。

您可以在FOSRestBundle 文档中了解有关此功能的更多信息。

于 2012-10-02T22:52:55.873 回答