【问题标题】:How to redirect to two different views in Laravel?如何重定向到 Laravel 中的两个不同视图?
【发布时间】:2021-09-25 01:38:06
【问题描述】:

我是 Laravel 框架的新手。我想要做的是首先将用户重定向到等待页面,然后,他们将在等待屏幕后被重定向到他们的主页。

我为此编写了一些代码,但不幸的是它不起作用。我搜索了它,但找不到解决方案。

这是我的代码:

function order(Request $req){
    $data = [['user_id'=>Auth::id(),'order_note'=>$req->order_note, 'sugar'=>$req->order_sugar, 'amount'=> $req->amount, 'place_id'=>$req->order_place, 'beverage_id'=>$req->order_beverage]];
    Orders::insert($data);
    $this->redirectToWait(); // this is another function in the same controller.
    sleep(10);
    return redirect()->route('home');
}

function redirectToWait(){
    return redirect()->route('wait');
}

这段代码只返回主路由,跳过了redirectToWait()函数。

感谢您的帮助:)

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    你不能只使用 PHP 和 Laravel 来做到这一点。 您必须使用 JavaScript 来加载第一页然后是第二页。

    控制器:

    function order(Request $req){
        $data = [['user_id'=>Auth::id(),'order_note'=>$req->order_note, 'sugar'=>$req->order_sugar, 'amount'=> $req->amount, 'place_id'=>$req->order_place, 'beverage_id'=>$req->order_beverage]];
        Orders::insert($data);
    
        return view('wait-step-view-here');
    }
    

    wait-step-view-here.blade.php

    ...[SOME_HTML_HERE]
    <script>
    setTimeout(function(){
      window.location.replace("{{ route('home') }}");
    }, 10000);
    </script>
    ...[SOME_HTML_HERE]
    

    【讨论】:

    • 错了。你可以只用 PHP/Laravel 做到这一点。
    • 我不认为你需要 Javascript,看起来它只能在 PHP 中完成
    • 然后告诉我们怎么做。一旦返回响应,PHP/Laravel 将无法访问它并且无法更改 Location Header
    • @shaedrich 这是错误的。服务器一次只能发送一个响应。您不能向客户端发送两个重定向响应(或者如果您只执行第一个响应)
    • 虽然sleep() 在等待页面上可能不起作用,但您仍然可以在相应的等待页面中放置&lt;meta http-equiv="refresh" content="10; url=/home"&gt;。我仍然坚持我的观点,“你不能只使用 PHP 和 Laravel 来做到这一点。你必须使用 JavaScript”是一个错误的陈述
    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2010-10-07
    • 1970-01-01
    • 2012-12-15
    • 2021-02-02
    • 2017-10-30
    相关资源
    最近更新 更多