- 前提・実現したいこと
一覧ページでの CSV出力はできるが検索結果での CSV出力ができない
- 発生している問題・エラーメッセージ
エラーメッセージは現状は出ていません。
3. 該当のソースコード
web.php
1Route::get('/downloadcsv/{mode}', [ProductController::class, 'downloadcsv'])->name('downloadcsv'); 2
view
1<a href="{{ route('downloadcsv',['mode' => $downloadmode[0]]) }}" class="btn btn-primary">CSVダウンロード</a>
Controller
1### 一覧ページ表示 2return view( 3 'vending_all', 4 [ 5 'products' => $products, 6 'companys' => $companys, 7 'downloadmode' => ['all'], 8 ] 9 ); 10### 検索機能表示 11return view( 12 'vending_all', 13 [ 14 'products' => $products, 15 'companys' => $companys, 16 'campany_id' => $company_id, 17 'downloadmode' => ['all'], 18 ] 19 ); 20### 並び替え表示 21return view( 22 'vending_all', 23 [ 24 'products' => $products, 25 'companys' => $companys, 26 'downloadmode' => ['all'], 27 ] 28 ); 29### CSV出力 30public function downloadcsv($mode, Request $request) 31 { 32 \Log::info("downloadcsv",[$mode]); 33 // dd($mode); 34 $products = Product::all(); 35 36 $response = new StreamedResponse(function () use ($products) { 37 $stream = fopen('php://output', 'w'); 38 foreach ($products as $product){ 39 fputcsv($stream, [ 40 $p->id, 41 ]); 42 } 43 fclose($stream); 44 },200, 45 [ 46 'Content-Type'=>'text/csv', 47 'Content-Disposition'=>'attachment; filename=products.csv', 48 ]); 49 return $response; 50 }
- 自分で調べたことや試したこと
検索機能・並び替えで表示するreturn viewの'downloadmode' => ['all'],の配列のallを帰ればいいのかと思いましたがCSV出力でのdownloadcsv関数の中を変数に代入しないとだと思いましたがどのように記述したらいいのかわからなくなりました。
- 使っているツールのバージョンなど補足情報
Laravel8での作成
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/31 05:46
退会済みユーザー
2022/05/31 06:48