使用Redirect :: back()Laravel关闭FancyBox

时间:2015-01-24 00:11:48

标签: php jquery laravel fancybox-2

我正在使用Laravel创建一个项目

在我看来,我使用Fancybox-2来显示表单。提交表单时,我希望Fancybox关闭,然后让用户重定向到另一个页面。

在我的控制器中,在处理表单的方法结束时,我有

// some code

return Redirect::route('Page')

当我从视图中提交表单时,一切正常。数据库已填满,我已重定向到“Page”页面。但是,我在Fancybox中重定向。如何关闭花式框,然后重定向到“Page”页面'在我的控制器内?这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

您必须使用javascript处理重定向。我建议你从控制器返回一个JSON对象,然后在你的回调函数中读出它:

if(Request::ajax()){
    return Response::json(array('redirect' => route('Page')));
}
return Redirect::route('Page')

使用Javascript:

function(response){
   if(response.redirect){
       window.location = response.redirect;
   }
}

答案 1 :(得分:1)

我不了解Laravel,但为了关闭fancybox(我认为它是iframe类型),您需要从打开的页面调用parent.jQuery.fancybox.close()方法。< / p>

然后,在您的fancybox自定义初始化脚本(您错过了在问题中显示的脚本)中,添加afterClose回调以将页面重定向到您想要的位置:

$(".fancybox").fancybox({
    // other API options
    afterClose : function() {
        window.location.href = "http://example.com/page.html";
    }
});