Laravel在呈现视图后调用函数

时间:2015-07-14 06:50:58

标签: php laravel view

我正在一个laravel网站上工作,该网站具有搜索航班/酒店等基本功能。 我想做的一件事是在用户提交搜索信息后显示加载页面,以便在API运行时发生一些动画。

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

  

PagesController.php

public function flight_search( Request $request )
{

    $FlightsController = new FlightsController();

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

然后在航班搜索视图中调用该功能

  

飞行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()方法本身返回带有搜索结果的下一个视图。

关于我应该如何处理的任何建议?

1 个答案:

答案 0 :(得分:2)

服务器只会在整个请求处理完毕后才会发送响应,因此您尝试做的事情不会起作用。这样做的常见解决方案是显示加载屏幕,向服务器发送AJAX请求以获取结果,并且一旦加载结果,隐藏加载屏幕并显示结果。当然,这必须使用Javascript,而不是PHP。

所以场景将是:

  • 用户填写表单
  • 用户点击&#34;搜索&#34;
  • 使用Javascript
  • 显示加载屏幕
  • 向后端发送AJAX请求以使用Javascript
  • 获取结果
  • 获取结果时,隐藏加载屏幕并使用Javascript
  • 显示结果