提交表单时 symfony 关闭 iframe

symfony close iframe when form is submitted

我有一个正在呈现表单的 iframe。我让一切都按我想要的方式工作,但现在我想关闭在提交表单时呈现表单的 iframe。

这是控制器:

public function createIssueAction(Request $request, $messageUid)
    {

         $form = $this->createForm(

          new IssuePopupFormType($this->container),

          $message
        );
        $form->handleRequest($request);
        if ($form->isValid()) {

            $message = $form->getData();

              //Doing some work

                $this->get('session')
                  ->getFlashBag()
                  ->add(
                    'success',
                    'issue' . $message . ' is created'
                  );

                return $this->redirect($this->generateUrl('_mail_inbox'));
            }
        }

        return $this->render(
          'AcmeBundle:Issue:issuePopup.html.twig',
          [
            'message' => $message,
            'form' => $form->createView()
          ]
        );
    }

我如何在提交表单而不是 url-redirect 时关闭 iframe?

您只能 remove/close 嵌入文档中的 iframe,因为它在其代码中。

所以你可以用 cross-document-messaging

或者你使用包装器,比如 easyxdm

这也可能有帮助http://cross-browser.com/talk/inter-frame_comm.html

随便,而不是重定向

 return $this->redirect($this->generateUrl('_mail_inbox'));

您呈现一个执行一些 javascript 并发布一些状态消息的视图

在嵌入文档中,您会收听该消息,如果收到它,您 dismiss/hide/remove iframe

嗯,这取决于你的设计,但也许有很多更简单的解决方案,例如在你的 symfony 动作中你呈现一个空的 html-view 并且你的 iframe 的 css 有 height:auto 所以如果它也没有边框而且什么都没有它看起来像是被解雇了