2013-11-23 12 views
8

私はSymfony2のnoobieです。 handleRequest()関数は"GET"メソッドでは機能しませんが、同じコードは"POST"で正常に機能します。

public function addAction(Request $request){ 
    $std = new Student(); 

    $form = $this->createForm(new StudentForm, $std, 
     array('method'=>'GET')); 

    $form->handleRequest($request); 

    if($form->isSubmitted()){ 
     $std= $form->getData(); 
     $em= $this->getDoctrine()->getManager(); 
     $em->persist($std); 
     $em->flush(); 
     return $this->render('target.twig'); 
    } 

    return $this->render('target twig', 
     array('newStdForm'=> $form->createView(),)); 
} 

上記のコードは動作していないが、私は'method':'POST''method':'GET'を変更した場合、それは正常に動作します。

+0

こんにちは、具体的にお試しください。 – gilden

+0

なぜGETを強制したいですか? POSTではなくGET要求でそれを行う特別な理由はありますか? – ghostika

答えて

1

POSTリクエストでは、パラメータがHTTPリクエストの本体に渡されるためだと思います。そしてそのhandleRequestは要求の本体の中のそれらの値を探します。しかし、GETリクエストでは、パラメータはurlに直接渡されます。だから私はそれが処理がうまくいかない理由だと思う。

通常は、GETを使用してページまたはURLを取得し、POSTを使用してサーバーに情報を送信します。

0

あなたの小枝のテンプレートは正しいですか?

17

StudentFormクラスのbuildFormメソッドでフォームのメソッドを指定します。したがって、handleRequestはGETパラメータを取得できます。

class StudentForm 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     // ... 
     $builder->setMethod('GET'); 
    } 
} 
0

今日この問題に直面しました。 Pierre Rolandの回答は、現在のバージョンでは部分的に正しいです。 "handleRequest"で呼び出されるデフォルトの "HttpFoundationRequestHandler"を確認しました。

明示GETフォームがあれば、「提出」とみなされます。(あなたがたとえばフォームクラスを使用している場合)、フォームに名前がない

  • 要求クエリには、フォームの名前を持つパラメータが含まれています。
関連する問題