2017-03-04 10 views
1

私はSymfonyのウェブサイトに記載されているようにエンベデッドコントローラを持っています。 http://symfony.com/doc/current/templating/embedding_controllers.htmlsymfony3エンベデッドコントローラ付きフォーム

唯一の違いは、コントローラにはフォームがあることです。すべてが正しくレンダリングされますが、フォームが送信されると、要求は常に空になります。要求が空であるため、$ form-> isValid()および$ form-> isSubmitted()は常にfalseを返します。

小枝:

{{ form_start(form) }} 
{{ form_widget(form) }} 
{{ form_end(form) }} 

コントローラー:

public function myEmbeddedAction(Request $request) 
    { 
     $template ="myTwig.html.twig"; 
     $supportTicket = new SupportTicket(); 
     $form = $this->createForm('AppBundle\Form\SupportTicketType', $supportTicket); 
     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
     // success 
     } 
     return $this->render($template, array(
      'supportTicket' => $supportTicket, 
      'form' => $form->createView() 

    )); 
} 

私のレイアウトでは、コントローラ埋め込み:

{{ render(controller('AppBundle:Default:myEmbedded')) }} 

で要求を

私のコードの下に見つけてください埋め込み行為イオンは常に同じ値を持っています:

{属性}:{}、 "要求":{}、 "クエリ":{}、 "サーバー":{}、 "ファイル":{}、 cookie ":{}、" headers ":{}}

ただし、URLから直接エンベデッドコントローラにアクセスしてフォームに入力すると動作します。エンベデッドコントローラの内部で動作するようにフォームを取得するにはどうすればよいですか?あなたが実際にサブリクエストを受け取る組込コントローラを使用する場合だけでにやにや笑いのため

+0

ちょっと笑いながら、$ request = $ this-> get( 'request_stack') - > getMasterRequest()を試してみてください。組み込みコントローラを使用する場合は、実際にサブリクエストを受け取ります。私は、サブリクエストには依然としてマスターリクエスト属性がありますが、そうでないかもしれないと思っていました。 – Cerad

+0

はい、うまくいきました。どうもありがとう。私はそれを受け入れることができるように答えとして追加できますか? – Sami

答えて

2

$request = $this->get('request_stack')->getMasterRequest(); 

を試してみてください。私は、サブリクエストには依然としてマスターリクエスト属性があると思っていたでしょうが、私はそう思わないでしょう。

関連する問題