2

backbone.js と symfony2 を使用して単一ページのアプリを作成していますが、1 つのことについて意見が必要です。

たとえば、この create user アクションを参照してください。バックボーンモデル(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);
    ... 
}

はいの場合、どうすればそれを行うことができますか? バックボーンは 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 に答える