symfony3嵌入式控制器与表单

时间:2017-03-04 19:56:29

标签: php forms twig symfony

我有Symfony网站上描述的嵌入式控制器。 http://symfony.com/doc/current/templating/embedding_controllers.html

唯一的区别是我的控制器有表格。全部都正确呈现,但提交表单后,请求始终为空。由于请求为空,$ 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')) }}

嵌入式操作的请求始终具有相同的值:

  

{ “属性”:{}, “请求”:{}, “查询”:{}, “服务器”:{}, “文件”:{}, “饼干”:{}, “报头”: {}}

但是,如果我直接通过URL访问嵌入式控制器并填写表单,则可以正常工作。如何让表单在我的嵌入式控制器中工作?

1 个答案:

答案 0 :(得分:2)

只是为了咧嘴笑试试

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

使用嵌入式控制器时,实际上会收到子请求。我原本以为子请求仍然具有主请求属性,但我猜不是。

相关问题