From 2df716e7811a4e8bdc20079f12979997971075d2 Mon Sep 17 00:00:00 2001 From: "kin.rinzen" Date: Fri, 12 Sep 2025 20:43:46 +0900 Subject: [PATCH] =?UTF-8?q?=E8=BB=8A=E7=A8=AE=E5=8C=BA=E5=88=86=E3=83=9E?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E7=94=BB=E9=9D=A2=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/PriceController.php | 318 +++++++++++------- .../Controllers/Admin/PsectionController.php | 47 ++- app/Models/Price.php | 1 + resources/views/admin/prices/_form.blade.php | 135 +++++--- resources/views/admin/prices/edit.blade.php | 2 +- resources/views/admin/prices/list.blade.php | 88 ++++- resources/views/admin/psection/add.blade.php | 9 +- resources/views/admin/psection/edit.blade.php | 68 +++- resources/views/admin/psection/list.blade.php | 76 +++-- .../settlement_transactions/_form.blade.php | 8 +- resources/views/admin/zones/_form.blade.php | 6 +- routes/web.php | 3 +- 12 files changed, 505 insertions(+), 256 deletions(-) diff --git a/app/Http/Controllers/Admin/PriceController.php b/app/Http/Controllers/Admin/PriceController.php index 27a1404..86110bd 100644 --- a/app/Http/Controllers/Admin/PriceController.php +++ b/app/Http/Controllers/Admin/PriceController.php @@ -32,6 +32,8 @@ class PriceController extends Controller if ($inputs['list']->total() > 0 && $inputs['page'] > $inputs['list']->lastPage()) { return redirect()->route('prices'); } + $dataList = $this->getDataDropList(); + $inputs = array_merge($inputs, $dataList); return view('admin.prices.list', $inputs); } @@ -39,204 +41,278 @@ class PriceController extends Controller public function add(Request $request) { - $inputs = [ - 'price_parkplaceid' => $request->input('price_parkplaceid'), // 駐車場所ID - 'park_id' => $request->input('park_id'), // 駐輪場ID - 'prine_name' => $request->input('prine_name'), // 商品名 - 'price_month' => $request->input('price_month',''), // 期間 - 'user_categoryid' => $request->input('user_categoryid'), // 利用者分類ID - 'price' => $request->input('price'), // 駐輪料金(税込) - 'psection_id' => $request->input('psection_id'), // 車種区分ID - 'price_ptypeid' => $request->input('price_ptypeid'), // 駐輪分類ID - 'pplace_id' => $request->input('pplace_id'), // 駐車車室ID - ]; - - $dataList = $this->getDataDropList(); - $inputs = array_merge($inputs, $dataList); + // POST の場合のみバリデーション + 保存 if ($request->isMethod('POST')) { + + // ★ 1. 全角数字を半角に変換(例:123 → 123) + $request->merge([ + 'pplace_id' => mb_convert_kana($request->input('pplace_id'), 'n'), + ]); + + // バリデーション + $validated = $request->validate([ + 'price_parkplaceid' => 'required|integer', // 駐車場所ID + 'park_id' => 'required|integer', // 駐輪場ID + 'prine_name' => 'required|string|max:255', // 商品名 + 'price_month' => 'nullable|integer', // 期間(月) + 'user_categoryid' => 'required|integer', // 利用者分類ID + 'price' => 'required|numeric|min:0', // 駐輪料金(税込) + 'psection_id' => 'required|integer', // 車種区分ID + 'price_ptypeid' => 'required|integer', // 駐輪分類ID + 'pplace_id' => 'required|integer', // 駐車車室ID + ], [ + 'pplace_id.integer' => '駐車車室ID は整数で入力してください。', + ]); + + // DB 登録 $type = false; - \DB::transaction(function () use ($inputs, &$type) { + \DB::transaction(function () use ($validated, &$type) { $new = new Price(); - $new->fill($inputs); - if( $new->save()){ + $new->fill($validated); + if ($new->save()) { $type = true; } }); + + // 結果 if ($type) { - $request->session()->flash('success', __('新しい成功を創造する。')); - return redirect()->route('prices'); + return redirect()->route('prices') + ->with('success', __('新しい成功を創造する。')); } else { - $request->session()->flash('error', __('新しい作成に失敗しました')); + return redirect()->route('prices') + ->with('error', __('新しい作成に失敗しました。')); } } - return view('admin.prices.add', $inputs); + // GET の場合 → 画面表示 + $dataList = $this->getDataDropList(); + return view('admin.prices.add', $dataList); } - public function edit(Request $request, $pk ,$view=''){ + + public function edit(Request $request, $pk ,$view='') + { $price = Price::getByPk($pk); if (empty($pk) || empty($price)) { - abort('404'); + abort(404); } $data = $price->getAttributes(); $dataList = $this->getDataDropList(); $data = array_merge($data, $dataList); + if ($request->isMethod('POST')) { $type = false; $requestAll = [ 'price_parkplaceid' => $request->input('price_parkplaceid'), - 'park_id' => $request->input('park_id'), - 'prine_name' => $request->input('prine_name'), - 'price_month' => $request->input('price_month',''), - 'user_categoryid' => $request->input('user_categoryid'), - 'price' => $request->input('price'), - 'psection_id' => $request->input('psection_id'), - 'price_ptypeid' => $request->input('price_ptypeid'), - 'pplace_id' => $request->input('pplace_id'), + 'park_id' => $request->input('park_id'), + 'prine_name' => $request->input('prine_name'), + 'price_month' => $request->input('price_month',''), + 'user_categoryid' => $request->input('user_categoryid'), + 'price' => $request->input('price'), + 'psection_id' => $request->input('psection_id'), + 'price_ptypeid' => $request->input('price_ptypeid'), + 'pplace_id' => $request->input('pplace_id'), ]; $data = array_merge($data, $requestAll); - \DB::transaction(function () use ($data, &$type,$price) { + + \DB::transaction(function () use ($data, &$type, $price) { $price->fill($data); $price->save(); $type = true; }); + if ($type) { - $request->session()->flash('success', __('更新に成功しました')); - return redirect()->route('prices'); + return redirect()->route('prices')->with('success', __('更新に成功しました。')); } else { - $request->session()->flash('error', __('更新に失敗しました')); + return redirect()->route('prices')->with('error', __('更新に失敗しました。')); } } + if ($view != '') { return view($view, $data); } + return view('admin.prices.edit', $data); } + public function delete(Request $request) { $arr_pk = $request->get('pk'); + if ($arr_pk) { - if (Price::deleteByPk($arr_pk)) { - return redirect()->route('prices')->with('success', __("削除成功。")); + $ids = is_array($arr_pk) ? $arr_pk : [$arr_pk]; + + if (Price::deleteByPk($ids)) { + return redirect()->route('prices')->with('success', __("削除成功しました。")); } else { return redirect()->route('prices')->with('error', __('削除に失敗しました。')); } } + return redirect()->route('prices')->with('error', __('削除するユーザーを選択してください。')); } + public static function deleteByPk($ids) + { + if (!is_array($ids)) { + $ids = [$ids]; + } + return self::whereIn('price_parkplaceid', $ids)->delete(); + } public function export(Request $request) { - - $headers = array( + $headers = [ "Content-type" => "text/csv;charset=UTF-8", 'Content-Encoding: UTF-8', "Content-Disposition" => "attachment; filename=file.csv", "Pragma" => "no-cache", "Cache-Control" => "must-revalidate, post-check=0, pre-check=0", "Expires" => "0" - ); - $inputs = [ - 'isMethodPost' => 0, - 'isExport' => 1, - 'sort' => $request->input('sort', ''), - 'sort_type' => $request->input('sort_type', ''), - ]; - $dataExport = Price::search($inputs); - $columns = array( - __('駐車場所ID'),// 0 - __('商品名'),// 1 - __('期間'),// 2 - __('駐輪場ID'),// 3 - __('駐輪場名'),// 3 - __('車種区分ID'),// 5 - __('車種区分'),// 6 - __('駐輪分類ID'),// 7 - __('駐輪分類'),// 8 - __('利用者分類ID'),// 9 - __('利用者分類'),// 10 - __('駐車車室ID'),//11 - __('駐輪料金(税込)'),// 12 - ); - $filename = "駐輪場所、料金マスタ.csv"; + $query = Price::query(); + + // 🚩 条件付きエクスポート(park_id) + if ($request->filled('park_id')) { + $query->where('park_id', $request->input('park_id')); + } + + // ソート + if ($request->filled('sort')) { + $query->orderBy($request->input('sort'), $request->input('sort_type', 'asc')); + } + + $dataExport = $query->get(); + + $columns = [ + __('駐車場所ID'), + __('商品名'), + __('期間'), + __('駐輪場ID'), + __('駐輪場名'), + __('車種区分ID'), + __('車種区分'), + __('駐輪分類ID'), + __('駐輪分類'), + __('利用者分類ID'), + __('利用者分類'), + __('駐車車室ID'), + __('駐輪料金(税込)'), + ]; + + $filename = "駐輪場所、料金マスタ.csv"; $file = fopen($filename, 'w+'); fputcsv($file, $columns); + foreach ($dataExport as $items) { - fputcsv($file, array( - $items->price_parkplaceid,// 0 - $items->prine_name, // 1 - $items->price_month, // 2 - $items->park_id, // 3 - !empty($items->getPark())? $items->getPark()->park_name:'' ,// 4 - $items->psection_id, // 5 - !empty($items->getPSection())? $items->getPSection()->psection_subject:'',// 6 - $items->price_ptypeid, // 7 - !empty($items->getPType())? $items->getPType()->ptype_subject:'' ,// 8 - $items->user_categoryid, //9 - !empty($items->getUserType())? $items->getUserType()->print_name:'' ,//10 - $items->pplace_id,// 11 - $items->price, // 12 - )); + fputcsv($file, [ + $items->price_parkplaceid, + $items->prine_name, + $items->price_month, + $items->park_id, + optional($items->getPark())->park_name, + $items->psection_id, + optional($items->getPSection())->psection_subject, + $items->price_ptypeid, + optional($items->getPType())->ptype_subject, + $items->user_categoryid, + optional($items->getUserType())->print_name, + $items->pplace_id, + $items->price, + ]); } fclose($file); + return Response::download($filename, $filename, $headers); } + public function import(Request $request) { $file = $request->file('file'); - if(!empty($file)){ - $data = Utils::csvToArray($file); - $type = 1; - $msg = ''; - $record = 0; - DB::beginTransaction(); - try { - Price::query()->delete(); - $col = 13; - foreach ($data as $key => $items) { - $record = $key + 2; - if (count($items) == $col) { - $row = new Price(); - $row->price_parkplaceid = $items[0]; - $row->prine_name = $items[1]; - $row->price_month = $items[2]; - $row->park_id = $items[3]; - $row->psection_id = $items[5]; - $row->price_ptypeid = $items[7]; - $row->user_categoryid = $items[9]; - $row->pplace_id = $items[11]; - $row->price = $items[12]; - if (!$row->save()) { - $type = 0; - $msg = '行:record型が一致しません。'; - break; - } - } else { - $type = 0; - $msg = '行:record列数が一致しません。'; - break; - } + if (empty($file)) { + return redirect()->route('prices')->with('error', __('CSVファイルを選択してください。')); + } + + $data = Utils::csvToArray($file); + $type = true; + $msg = ''; + $record = 0; + + DB::beginTransaction(); + try { + // 先清空数据(全置換仕様なら残す) + Price::query()->delete(); + + $col = 13; // CSV 項目数 + foreach ($data as $key => $items) { + $record = $key + 2; // エラー行番号(ヘッダ行を考慮) + + // 項目数チェック + if (count($items) != $col) { + $type = false; + $msg = "行:{$record} 列数が一致しません。"; + break; + } + + // 必須チェック + if (empty($items[0])) { $type = false; $msg = "行:{$record} 駐車場所IDが未設定です。"; break; } + if (empty($items[1])) { $type = false; $msg = "行:{$record} 商品名が未設定です。"; break; } + if (empty($items[2])) { $type = false; $msg = "行:{$record} 期間が未設定です。"; break; } + if (empty($items[3])) { $type = false; $msg = "行:{$record} 駐輪場IDが未設定です。"; break; } + if (empty($items[5])) { $type = false; $msg = "行:{$record} 車種区分IDが未設定です。"; break; } + if (empty($items[7])) { $type = false; $msg = "行:{$record} 駐輪分類IDが未設定です。"; break; } + if (empty($items[9])) { $type = false; $msg = "行:{$record} 利用者分類IDが未設定です。"; break; } + if (empty($items[11])) { $type = false; $msg = "行:{$record} 駐車車室IDが未設定です。"; break; } + if (empty($items[12])) { $type = false; $msg = "行:{$record} 駐輪料金が未設定です。"; break; } + + // マスタ存在チェック + if (!Park::where('park_id', $items[3])->exists()) { + $type = false; $msg = "行:{$record} 駐輪場IDが存在しません。"; break; + } + if (!Psection::where('psection_id', $items[5])->exists()) { + $type = false; $msg = "行:{$record} 車種区分IDが存在しません。"; break; + } + if (!Ptype::where('ptype_id', $items[7])->exists()) { + $type = false; $msg = "行:{$record} 駐輪分類IDが存在しません。"; break; + } + if (!Usertype::where('user_categoryid', $items[9])->exists()) { + $type = false; $msg = "行:{$record} 利用者分類IDが存在しません。"; break; + } + // TODO: 駐車車室ID チェック(pplace_id) + + // 保存 + $row = new Price(); + $row->price_parkplaceid = $items[0]; + $row->prine_name = $items[1]; + $row->price_month = $items[2]; + $row->park_id = $items[3]; + $row->psection_id = $items[5]; + $row->price_ptypeid = $items[7]; + $row->user_categoryid = $items[9]; + $row->pplace_id = $items[11]; + $row->price = $items[12]; + + if (!$row->save()) { + $type = false; $msg = "行:{$record} データ保存に失敗しました。"; break; } - } catch (\Exception $e) { - $msg = '行:record型が一致しません。'; - $type = 0; - } - if ($type) { - DB::commit(); - return redirect()->route('prices')->with('success', __('輸入成功')); - } else { - DB::rollBack(); - return redirect()->route('prices')->with('error', __($msg, ['record' => $record])); } + } catch (\Exception $e) { + $type = false; + $msg = "行:{$record} 予期せぬエラー: ".$e->getMessage(); + } + + if ($type) { + DB::commit(); + return redirect()->route('prices')->with('success', __('インポートが正常に完了しました。')); } else { - return redirect()->route('prices')->with('error', __('あなたはcsvファイルを選択していません。')); + DB::rollBack(); + return redirect()->route('prices')->with('error', $msg); } } + public function info(Request $request, $id) { return $this->edit($request, $id, 'admin.prices.info'); diff --git a/app/Http/Controllers/Admin/PsectionController.php b/app/Http/Controllers/Admin/PsectionController.php index 9351d2a..66c287e 100644 --- a/app/Http/Controllers/Admin/PsectionController.php +++ b/app/Http/Controllers/Admin/PsectionController.php @@ -9,22 +9,37 @@ use App\Models\Psection; class PsectionController extends Controller { // 一覧画面 - public function list(Request $request) + public function list(Request $request) { - // ソート順 - $sort = $request->input('sort', 'psection_id'); - $sort_type = $request->input('sort_type', 'asc'); + $inputs = $request->all(); + // ソート可能なカラム + $allowedSortColumns = ['psection_id', 'psection_subject']; - $query = Psection::query(); - if (in_array($sort, ['psection_id', 'psection_subject'])) { - $query->orderBy($sort, $sort_type); + // ソート情報の取得 + $sortColumn = $inputs['sort'] ?? 'psection_id'; + $sortType = strtolower($inputs['sort_type'] ?? 'asc'); + + $query = \App\Models\Psection::query(); + + if (in_array($sortColumn, $allowedSortColumns, true)) { + if (!in_array($sortType, ['asc', 'desc'], true)) { + $sortType = 'asc'; + } + $query->orderBy($sortColumn, $sortType); } - $list = $query->get(); + // ページネーション(20件) + $list = $query->paginate(20); - return view('admin.psection.list', compact('list', 'sort', 'sort_type')); + return view('admin.psection.list', [ + 'list' => $list, + 'sort' => $sortColumn, + 'sort_type' => $sortType, + ]); } + + // 新規追加 public function add(Request $request) { @@ -42,16 +57,26 @@ class PsectionController extends Controller // 編集 public function edit(Request $request, $id) { + // 主キーで検索(見つからない場合は 404) $psection = Psection::findOrFail($id); + if ($request->isMethod('post')) { + // バリデーション $validated = $request->validate([ 'psection_subject' => 'required|string|max:255', ]); + + // データ更新 $psection->update($validated); + + // 成功メッセージ & リダイレクト return redirect()->route('psection')->with('success', '車種区分を更新しました'); } - return view('admin.psection.edit', compact('psection')); - } + + // 編集画面を表示 + return view('admin.psection.edit', compact('psection')); +} + // 詳細(info) public function info(Request $request, $id) diff --git a/app/Models/Price.php b/app/Models/Price.php index cfd2e5d..3ad4daf 100644 --- a/app/Models/Price.php +++ b/app/Models/Price.php @@ -21,6 +21,7 @@ class Price extends Model protected $primaryKey = 'price_parkplaceid'; protected $fillable = [ + 'price_parkplaceid', 'prine_name', 'price_month', 'park_id', diff --git a/resources/views/admin/prices/_form.blade.php b/resources/views/admin/prices/_form.blade.php index 56f1139..6e1da0a 100644 --- a/resources/views/admin/prices/_form.blade.php +++ b/resources/views/admin/prices/_form.blade.php @@ -18,20 +18,33 @@ @endif
+ {{-- バリデーションエラー表示 --}} + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
- @if($isEdit) - -
- + +
+ +
+
+
+
-
-
- -
-
- @endif +
@@ -39,12 +52,15 @@
- +
- +
@@ -53,13 +69,15 @@
-
@@ -69,13 +87,16 @@
- +
@@ -84,7 +105,10 @@ @@ -99,15 +123,14 @@ -
@@ -117,50 +140,64 @@
- -
- -
-
-
- -
-
+ +
+ +
+
+ + + @error('pplace_id') +
{{ $message }}
+ @enderror +
+ -
+
- +
- - +
- {{-- 下部ボタン --}} - @if($isEdit) - {{-- 編集画面 --}} + {{-- ▼ 下部ボタン --}} +
+ {{-- 登録ボタン --}} -
- @csrf - @method('DELETE') - + {{-- 削除ボタン(編集画面のみ表示) --}} + @if(!empty($price_parkplaceid))
- @else - {{-- 新規画面 --}} - - @endif +
+ @csrf + + +
+ @endif +
\ No newline at end of file diff --git a/resources/views/admin/prices/edit.blade.php b/resources/views/admin/prices/edit.blade.php index 2e037a0..185d66f 100644 --- a/resources/views/admin/prices/edit.blade.php +++ b/resources/views/admin/prices/edit.blade.php @@ -26,7 +26,7 @@
@csrf - @method('PUT') + @include('admin.prices._form', ['isEdit' => true])
diff --git a/resources/views/admin/prices/list.blade.php b/resources/views/admin/prices/list.blade.php index 111dd4c..813e98e 100644 --- a/resources/views/admin/prices/list.blade.php +++ b/resources/views/admin/prices/list.blade.php @@ -31,31 +31,95 @@ - {{-- ▼ 各種アクションボタン群 --}} + {{-- ▼ 各種アクションボタン群 --}}
+ {{-- 新規 --}} + {{-- 削除 --}} - + {{-- CSV出力(全件 or ソート条件付き)--}} +
+ @csrf + + + +
- + {{-- エクスポート(条件選択モーダル) --}} + - + {{-- インポート(モーダル) --}} + +
+ + {{-- エクスポート用モーダル --}} + + + {{-- インポート用モーダル --}} + {{-- ▼ ページネーション --}}
- {{ $list->appends(['sort' => $sort ?? '', 'sort_type' => $sort_type ?? ''])->links('pagination') }} + {{ $list->appends([ + 'sort' => $sort ?? '', + 'sort_type' => $sort_type ?? '' + ])->links('pagination') }}
@@ -84,7 +148,7 @@ {{-- ▼ 一覧(市区マスタ準拠:1枚テーブル/先頭が「チェック+編集」統合列) --}}
@csrf - +
diff --git a/resources/views/admin/psection/add.blade.php b/resources/views/admin/psection/add.blade.php index 5c87345..94a957b 100644 --- a/resources/views/admin/psection/add.blade.php +++ b/resources/views/admin/psection/add.blade.php @@ -4,12 +4,12 @@
-

車種区分新規登録

+

新規登録

@@ -18,7 +18,6 @@
- {{-- 显示错误信息 --}} @if ($errors->any())
    @@ -39,9 +38,9 @@
- - 戻る +
diff --git a/resources/views/admin/psection/edit.blade.php b/resources/views/admin/psection/edit.blade.php index 195236a..7acbf56 100644 --- a/resources/views/admin/psection/edit.blade.php +++ b/resources/views/admin/psection/edit.blade.php @@ -1,35 +1,69 @@ @extends('layouts.app') -@section('title', '車種区分新規登録') + +@section('title', '車種区分マスタ 編集') + @section('content')
-

車種区分新規登録

+
+

車種区分マスタ 編集

+
+
-
- @csrf -
- - -
-
- - -
- - 戻る -
+
+
+ @csrf +
+ {{-- 車種区分ID(読み取り専用) --}} +
+ +
+ +
+
+ + {{-- 車種区分名 --}} +
+ +
+ + @error('psection_subject') +
{{ $message }}
+ @enderror +
+
+
+ + {{-- ▼ 下部ボタン --}} +
+ {{-- 登録ボタン --}} + + + {{-- 削除ボタン(同じ行に並べる) --}} + + @csrf + @method('DELETE') + + +
+ +
+ @endsection diff --git a/resources/views/admin/psection/list.blade.php b/resources/views/admin/psection/list.blade.php index 1c77177..3a44251 100644 --- a/resources/views/admin/psection/list.blade.php +++ b/resources/views/admin/psection/list.blade.php @@ -23,61 +23,51 @@
- {{-- ▼ アクションボタン(市区マスタ準拠) --}} + {{-- ▼ アクションボタン --}}
- 新規 -
+ {{-- ▼ ページネーション --}} +
+ {{ $list->appends([ + 'sort' => $sort ?? '', + 'sort_type' => $sort_type ?? '' + ])->links('pagination') }} +
+ @if ($list->count() > 0)
@csrf
- +
- {{-- ▼ 統合列:チェック + 編集(背景色は #faebd7) --}} + {{-- ▼ 統合列:チェック + 編集 --}} - {{-- ▼ 表頭:ソート対応(ID / 名称) --}} - - - + @foreach ($list as $item) - {{-- ▼ 統合セル:チェック + 編集(市区マスタの老書式に合わせる) --}} + {{-- ▼ 統合セル:チェック + 編集 --}}
- - 車種区分ID - @if($sort == 'id') - @if($direction == 'asc') - - @else - - @endif - @endif - + {{-- ▼ ソート対象列 --}} + + 車種区分ID - - 車種区分名 - @if($sort == 'subject') - @if($direction == 'asc') - - @else - - @endif - @endif - + + 車種区分名
+ +{{-- ▼ ソート用スクリプト --}} + + @endsection diff --git a/resources/views/admin/settlement_transactions/_form.blade.php b/resources/views/admin/settlement_transactions/_form.blade.php index 9fac302..bd2f63b 100644 --- a/resources/views/admin/settlement_transactions/_form.blade.php +++ b/resources/views/admin/settlement_transactions/_form.blade.php @@ -208,11 +208,11 @@ {{-- 下部ボタン --}} @if($isEdit) - - + + @else - - + + @endif diff --git a/resources/views/admin/zones/_form.blade.php b/resources/views/admin/zones/_form.blade.php index 8646bf6..0bf64e2 100644 --- a/resources/views/admin/zones/_form.blade.php +++ b/resources/views/admin/zones/_form.blade.php @@ -83,11 +83,11 @@
@if(isset($zone) && $zone->zone_id) {{-- 編集画面 --}} - - 戻る + + 削除 @else {{-- 新規画面 --}} - 削除 + @endif
diff --git a/routes/web.php b/routes/web.php index c55b38e..e5edf4c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -183,7 +183,8 @@ Route::middleware('auth')->group(function () { Route::match(['get', 'post'], '/admin/prices/info/{id}', [PriceController::class, 'info'])->name('price_info')->where(['id' => '[0-9]+']); Route::match(['get', 'post'], '/admin/prices/delete', [PriceController::class, 'delete'])->name('prices_delete'); Route::match(['get', 'post'], '/admin/prices/import', [PriceController::class, 'import'])->name('prices_import'); - Route::get('/admin/prices/export', [PriceController::class, 'export'])->name('prices_export'); + // kin 修正 + Route::post('/admin/prices/export', [PriceController::class, 'export'])->name('prices_export'); //車種区分マスタ Route::match(['get', 'post'], '/admin/psection', [PsectionController::class, 'list'])->name('psection');