Laravel 渲染视图后调用函数

Laravel call a function after view is rendered

我正在开发一个 laravel 网站,该网站具有搜索 flights/hotels 等基本功能。 我想做的一件事是在用户提交搜索信息后显示加载页面,以便在 API 运行s.

时发生一些动画

问题是我想不出同时显示页面和 运行 控制器代码的方法。我一直在尝试从我的 PagesController 将 FlightsController 传递给视图

PagesController.php

public function flight_search( Request $request )
{

    $FlightsController = new FlightsController();

    return view('flights.flight-search', [
        'FlightsController' => $FlightsController,
        'user_input' => $request
        ]);
}

然后像这样在航班搜索视图中调用函数

flight-search.blade.php

@extends('app')

@section('content')
<div class="container-fluid">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="page-heading">Searching for available tickets...</div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="progress">
                <div class="progress-bar progress-bar-striped progress-bar-warning active" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:100%">
                </div>
            </div>
        </div>
    </div>
</div>

{{ $FlightsController->search( $user_input ) }}

@endsection

但是页面加载总是等待函数调用完成,而 search() 方法本身 returns 下一个带有搜索结果的视图。

关于我应该如何处理这个问题有什么建议吗?

只有在处理完整个请求后,服务器才会发送响应,因此您尝试执行的操作将无效。一个常见的解决方案是显示加载屏幕,向服务器发送 AJAX 请求以获取结果,一旦加载结果,隐藏加载屏幕并显示结果。当然这必须用 Javascript 来完成,而不是 PHP.

所以场景是:

  • 用户填写表格
  • 用户点击"Search"
  • 使用 Javascript
  • 显示加载屏幕
  • 向后端发送AJAX请求得到结果Javascript
  • 获取结果时,隐藏加载屏幕并显示结果 Javascript