2017-03-04 178 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')) }} 

的請求嵌入式行爲離子總是具有相同的值:

{「attributes」:{},「request」:{},「query」:{},「server」:{},「files」:{}, cookies「:{},」headers「:{}}

但是,如果我直接通過URL訪問嵌入式控制器並填寫表單,它就可以工作。我怎樣才能讓表單在我的嵌入式控制器中工作?

+0

只是爲了笑話嘗試$ request = $ this-> get('request_stack') - > getMasterRequest()。使用嵌入式控制器時,實際上會收到一個子請求。我會認爲子請求仍然具有主請求屬性,但可能不是。 – Cerad

+0

是的,它的工作。非常感謝。你可以添加一個答案,以便我可以接受它嗎? – Sami

回答

2

只是爲了笑着嘗試

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

當使用嵌入式控制器,你居然收到一分要求。我會認爲這個子請求仍然會有主請求屬性,但我想不是。