首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >形式的symfony3嵌入式控制器

形式的symfony3嵌入式控制器
EN

Stack Overflow用户
提问于 2017-03-04 19:56:29
回答 1查看 880关注 0票数 4

我有一个嵌入式控制器,在Symfony的网站上有描述。controllers.html

唯一的区别是我的控制器有一个表单。所有的呈现都是正确的,但是一旦提交了表单,请求总是空的。由于请求是空的,$form->isValid()和$form->isSubmitted()总是返回false。

请在下面找到我的代码:

树枝:

代码语言:javascript
复制
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}

主计长:

代码语言:javascript
复制
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()

      ));
}

将控制器嵌入我的布局中:

代码语言:javascript
复制
{{ render(controller('AppBundle:Default:myEmbedded')) }}

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

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

但是,如果我直接通过URL访问嵌入式控制器并填写表单,它就能工作。如何使表单在我的嵌入式控制器内工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-04 21:16:45

只是为了微笑,试试

代码语言:javascript
复制
$request = $this->get('request_stack')->getMasterRequest(); 

当使用嵌入式控制器时,您实际上收到了一个子请求。我原以为子请求仍然具有主请求属性,但我想没有。

更新:2019年-09-16

虽然上面的代码在从AbstractController扩展时仍然有效,但使用注入更符合Symfony的精神:

代码语言:javascript
复制
public function myEmbeddedAction(RequestStack $requestStack)
{
    $request = $requestStack->getMasterRequest();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42600672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档