2016-03-22 4 views
0

私は、AJAXを使用してJQueryを使用してシリアル化されたデータをSymfony 2(2.7.10)アプリ内の関数に送信しました。Symfony 2、AJAXから送信されたデータを新しいエンティティに保存する方法

私は現在、そのデータを新しいエンティティにバインドし、そのエンティティを保存しようとする際にいくつか問題があります。ここで

は、私が今までにやっていることです:

public function AJAX_SaveTestAction(Request $request) { 

    // $GetFormData = $request->get('Data'); <- This is a jquery serialized data 

    $NewData = new TestInfo(); <- this is the entity I want to save 

    $form = $this->createForm(new InfoType(), $NewData); 
    $form->handleRequest($request); 

    if ($request->isMethod('POST')) { 

     $form->bind($request->get('Data')); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($NewData); <- not saving jquery returns 500 server error? 
     $em->flush(); 
    } 

    die(); <- this is just here for testing, I will want to return a json message or something else! 
} 

すべてのヘルプ大歓迎。

ありがとうございました。

+0

使用放火犯として、あなたのデータを提出してください。あなたはそれをデバッグすることができます。誰もあなたが500のエラーを受け取ったことを知っているだけに役立つことはありません。 – Alsatian

+0

ファイアバグが嫌いですが、私はそれを前にして、私はそれが何をしようとしているのかを見いだす方法を考えようとしていました。しかし、主に私はちょうど誰かが私が間違ったことをしているのを見て、それを修正する方法を知っていたとしてポストしたかった。しかし、ありがとう、私はfirebugを見ている –

+0

ok firebugコールのようなもの、それは、HTMLのsymfonyを返すので、私の1番目のフィールドはnullにすることはできませんと言います。バインドがデータを新しいフォームに正しくバインドするために動作していないため、保存されていないようです。 –

答えて

0

form-> handleRequestとform-> bindを使用しない form-> bindはsymfony 2.6より前のform-> handleRequestと同等でした。

あなたはsymfonyの2.6+使用フォーム - を使用している場合はsymfony 2.3の使用フォーム - >バインド を使用している場合>のhandleRequest

あなたのコントローラは、次のようになります。

しかし、あなたのJSを送信する必要がありますこのルートへのPOSTリクエスト(ポストパラメータ付き)。

はそれとである場合があります。 http://api.jquery.com/jquery.post/

+0

クール、私は今システムで何かに移動しなければならなかったが、私ができるときこれを前に与える、ありがとう –

0

handleRequestを使用してエンティティに正しく要求データをバインドするには、symfonyはあなたのポストされたデータでキーとしてフォーム名を持つ配列を期待しています。

フォームのメソッドgetNameをオーバーライドしなかった場合は、デフォルトでフォームクラス名の「強調」によって定義されます。したがって、info_typeここにする必要があります。

TL; DR:あなたが['info_type' => [ YOUR DATA... ]]の代わりに、AJAX要求応答を開くには、Firefoxでちょうど[ YOUR DATA... ]

関連する問題