2015-07-14 3 views
1

Я работаю на веб-сайте laravel, который имеет базовые функции поиска рейсов/отелей и т. Д. Одна вещь, которую я хочу сделать, это показать страницу загрузки после того, как пользователь отправит запрос чтобы анимация происходила во время работы API.Laravel вызов функции после просмотра отображается

Проблема заключается в том, что я не могу понять способ отображения страницы и запуска кода контроллера одновременно. Я пытался от моего PagesController передать FlightsController к представлению

PagesController.php

public function flight_search(Request $request) 
{ 

    $FlightsController = new FlightsController(); 

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

, а затем вызвать функцию с точки зрения летно-поиска как так

полет-поиск.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() сам возвращает следующее представление с результатом поиска.

Любые предложения о том, как я должен продолжить это?

ответ

2

Сервер отправит ответ только после обработки всего запроса, поэтому то, что вы пытаетесь сделать, не будет работать. Общим решением для этого является отображение экрана загрузки, отправка запроса AJAX на сервер для получения результата и, как только результаты будут загружены, скрыть экран загрузки и показать результат. Конечно, это нужно делать с Javascript, а не с PHP.

Так сценарий будет:

  • пользователь заполняет форме
  • нажмет пользователь «Поиск»
  • показать экран загрузки с Javascript
  • отправить запрос AJAX для внутреннего интерфейса, чтобы получить результат с Javascript
  • при получении результатов, скрыть экран загрузки и показать результаты с помощью Javascript
+0

Да, вы правы. Я надеялся найти способ сделать это только с Laravel, но, к сожалению, обработка запросов не позволяет этого. Спасибо за подробный ответ! –

Смежные вопросы