【问题标题】:Close Fancybox and redirect to dynamic url from controller关闭 Fancybox 并从控制器重定向到动态 url
【发布时间】:2014-09-11 09:28:33
【问题描述】:

我有一个带有输入和提交按钮的花式框。在提交时我生成一个 url,然后我想关闭 fancybox 并重定向到生成的 url。

重定向有效,但在 Fancybox 中打开。我尝试了

中的建议

how-to-redirect-zend-login-form-in-a-fancbox-iframe-with-php-without-any-js-on,

fancybox-close-from-within-iframe-and-take-parent-page-to-the-link

和类似的。

close-fancybox-2-window-and-redirect-parent-window 中提到的选项自 1 以来不合适/不受欢迎。我正在为整个应用程序使用在单独文件中定义的 fancybox,并在 fancybox 维度中添加 afterClose 回调将对所有其他 fancyboxes 产生影响(我不想单独标注每个fancybox的尺寸),以及2.我希望能够在取消时关闭fancybox而不需要重定向。

所需的解决方案是关闭fancybox 并从控制器重定向。 问题是我的 url 是动态的并且是在提交时生成的,这意味着我无法在打开 fancybox 时设置 url。但由于重定向正在工作,我想关闭fancybox 应该不会太难。

我有什么:

Choose.phtml 在 index.php 中的 chooseAction 中打开。 在幻想框中,我选择选项 A 或 B 并提交。提交时调用 createOption 操作,将 Option 插入数据库并返回 id(例如“123”)。此 id 成为 url http://www.example.com/option/edit/id/123 的一部分。

然后,相关的部分来了,在我的控制器中,我现在有了:

echo '<script type="text/javascript">window.location.href = '.
$this->_helper->redirector->gotoRoute( array("module" => "option", "controller" =>
"create", "action" => "edit", "id" => $newOptionId ) ,"newOption", TRUE).';
parent.jQuery.fancybox.close(); </script>';

url 部分看起来不错,因为它确实重定向到所需的视图。唯一的问题是它显示在 fancybox 中,所以 fancybox.close 部分仍然是问题。

【问题讨论】:

    标签: php redirect iframe fancybox


    【解决方案1】:

    我最终通过将关闭和重定向代码添加到 fancybox 脚本中并将新创建的 id 从控制器分配给视图来解决它。对于任何有类似问题的人,方法如下:

    所以在索引控制器中:

    $this->view->newOptionId = $newOptionId;
    

    在 Choose.phtml(fancybox 视图)中:

    <script type="text/javascript">
     window.parent.location.href = '<?php echo $this->url( array("module" => "option", "controller" => "create", "action" => "edit", "id" =>  $this->newOptionId ),"newOption", TRUE)?>';
     parent.jQuery.fancybox.close();
    </script>
    

    现在看起来不错:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多