簡體   English   中英

symfony3嵌入式控制器的形式

[英]symfony3 embedded controller with form

我有一個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訪問嵌入式控制器並填寫表格,則它可以工作。 如何使該表單在嵌入式控制器內部運行?

只為咧嘴笑

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

使用嵌入式控制器時,您實際上會收到一個子請求。 我本以為子請求仍將具有主請求屬性,但我想沒有。

更新時間:2019-09-16

雖然上面的代碼在從AbstractController擴展時仍然可以使用,但是使用注入更加符合Symfony的精神:

public function myEmbeddedAction(RequestStack $requestStack)
{
    $request = $requestStack->getMasterRequest();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM