Php 关闭Fancybox并从控制器重定向到动态url

Php 关闭Fancybox并从控制器重定向到动态url,php,redirect,iframe,fancybox,Php,Redirect,Iframe,Fancybox,我有一个带有输入和提交按钮的fancybox。在提交时,我生成一个url,然后我想关闭fancybox并重定向到生成的url 重定向正在工作,但已在Fancybox中打开。最后,我尝试了这些建议 , 类似的 中提到的选项不合适/不可取,因为1。我正在为整个应用程序使用一个单独文件中定义的fancybox,并且在fancybox维度中添加一个afterClose回调将对所有其他fancybox产生影响(我不想单独对每个fancybox进行维度划分),以及2。我希望能够在取消时关闭fancybox

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

重定向正在工作,但已在Fancybox中打开。最后,我尝试了这些建议

,

类似的

中提到的选项不合适/不可取,因为1。我正在为整个应用程序使用一个单独文件中定义的fancybox,并且在fancybox维度中添加一个afterClose回调将对所有其他fancybox产生影响(我不想单独对每个fancybox进行维度划分),以及2。我希望能够在取消时关闭fancybox而不重定向

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

我所拥有的:

Choose.phtml在index.php中的chooseAction的fancybox中打开。 在fancybox中,我选择选项A或B并提交。提交时,调用action createOption,将该选项插入数据库中,并返回id(如“123”)。此id将成为url的一部分

然后,这里是相关部分,在我的控制器中,我现在有:

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>';
echo'window.location.href='。
$this->\u helper->redirector->gotoRoute(数组(“模块”=>“选项”,“控制器”=>
“创建”、“操作”=>“编辑”、“id”=>$newOptionId)、“newOption”,TRUE);
parent.jQuery.fancybox.close();';

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

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

因此,在索引控制器中:

$this->view->newOptionId = $newOptionId;
并在Choose.phtml(fancybox视图)中:


window.parent.location.href='';
parent.jQuery.fancybox.close();
现在看起来不错:)

<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>