2017-03-04 181 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(); 

当使用嵌入式控制器,你居然收到一分要求。我会认为这个子请求仍然会有主请求属性,但我想不是。