下载后重定向到laravel视图

时间:2017-08-22 20:08:42

标签: php laravel-5

如何重定向到另一个页面以成功导出laravel视图文件。我正在使用Laravel Excel 2.1.20。 我研究过,我发现除了我首先重定向然后下载excel表之外,这是不可能完成的。我做了以下但仍然无法正常工作。

这是我的控制器:

$export = Excel::create('Request for Quote', function($excel) use($item, $request) {
    $excel->sheet('RFQ 1', function($sheet) use($item, $request) {
    $sheet->loadView('requests.send_rfq_pdf')
        ->with('item', $item)
        ->with('request', $request);
    });
});
session(['download.in.the.next.request' => $export]);
return back();

我的观点:

@if(Session::has('download.in.the.next.request'))
    <meta http-equiv="refresh" content="5;url={{Session::get('download.in.the.next.request') }}">
@endif

1 个答案:

答案 0 :(得分:1)

如果您通过POST请求触发下载Excel文件,使用->download("xlsx");之类的闭包,则您的浏览器无需在任何地方重定向。

例如:

// ExampleController.php
public function postDownload(Request $request){
  Excel::create('Request for Quote', function($excel) use($item, $request) {
    $excel->sheet('RFQ 1', function($sheet) use($item, $request) {
      $sheet->loadView('requests.send_rfq_pdf')
      ->with('item', $item)
      ->with('request', $request);
    });
  })->download("xlsx");
}

您需要route来处理此帖子请求:

// routes.php:
Route::post("/pdf/download", "ExampleController@postDownload");

和一个view,其中包含一个简单的表单,可以为POST文件中定义的路由生成routes.php个请求:

<!-- {view}.blade.php -->
<form method="POST" action="{{ url('/pdf/download') }}">
  <input type="hidden" name="_token" value="{{ csrf_token() }}/>
  <button type="submit">Download</button>
</form>