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
我正在开发一个 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