【问题标题】:Backbone.js and Symfony2 form validationBackbone.js 和 Symfony2 表单验证
【发布时间】:2012-10-02 14:10:37
【问题描述】:

我正在使用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 功能,但没有成功。

【问题讨论】:

    标签: symfony backbone.js


    【解决方案1】:

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

    【讨论】:

    • 对不起,我在示例中犯了一个错误。赋值是通过 $form 的 bind 方法完成的,理论上应该使用 $request 对象。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多