提交表单时symfony关闭iframe

时间:2015-02-18 14:06:14

标签: symfony iframe

我有一个呈现表单的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()
          ]
        );
    }

如何在提交表单而不是网址重定向时解除iframe?

1 个答案:

答案 0 :(得分:0)

你可以唯一地删除/关闭嵌入文档中的iframe,因为它在代码中。

所以你可以用cross-document-messaging

来做到这一点

或者您使用包装器,例如easyxdm

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

无论如何,而不是重定向

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

你渲染一个视图,执行一些发布一些状态消息的javascript

在您收听该邮件的嵌入文档中,如果您收到该邮件,则会解除/隐藏/删除iframe

这取决于你的设计,但也许有很多更简单的解决方案,例如你的symfony动作你渲染一个空的html视图 并且你的iframe的css有高度:auto所以如果它也没有边框而且没有看起来像它被解雇了