diff --git a/app/Http/Controllers/Admin/PsectionController.php b/app/Http/Controllers/Admin/PsectionController.php index 66c287e..441afaa 100644 --- a/app/Http/Controllers/Admin/PsectionController.php +++ b/app/Http/Controllers/Admin/PsectionController.php @@ -37,21 +37,23 @@ class PsectionController extends Controller 'sort_type' => $sortType, ]); } - - - + // 新規追加 public function add(Request $request) { if ($request->isMethod('post')) { $validated = $request->validate([ - 'psection_id' => 'required|integer|unique:psection,psection_id', + // 'psection_id' は自動採番なので不要 'psection_subject' => 'required|string|max:255', ]); + Psection::create($validated); - return redirect()->route('psection')->with('success', '車種区分を追加しました'); + + return redirect()->route('psections')->with('success', '車室区分を追加しました'); } - return view('admin.psection.add'); + + // GET の場合は空のモデルを渡してフォームを表示 + return view('admin.psection.add', ['psection' => new Psection()]); } // 編集 @@ -70,7 +72,7 @@ class PsectionController extends Controller $psection->update($validated); // 成功メッセージ & リダイレクト - return redirect()->route('psection')->with('success', '車種区分を更新しました'); + return redirect()->route('psections')->with('success', '車種区分を更新しました'); } // 編集画面を表示 @@ -88,11 +90,20 @@ class PsectionController extends Controller // 削除 public function delete(Request $request) { - $ids = $request->input('pk', []); - if (!empty($ids)) { - Psection::whereIn('psection_id', $ids)->delete(); - return redirect()->route('psection')->with('success', '削除しました'); + $arr_pk = $request->get('pk'); + + if (!is_array($arr_pk)) { + $arr_pk = [$arr_pk]; } - return redirect()->route('psection')->with('error', '削除対象を選択してください'); + + if ($arr_pk && count($arr_pk) > 0) { + if (Psection::whereIn('psection_id', $arr_pk)->delete()) { + return redirect()->route('psections')->with('success', __("削除が完了しました。")); + } else { + return redirect()->route('psections')->with('error', __('削除に失敗しました。')); + } + } + return redirect()->route('psections')->with('error', __('削除するデータを選択してください。')); } + } diff --git a/app/Http/Controllers/Admin/PtypeController.php b/app/Http/Controllers/Admin/PtypeController.php index 39d88c3..3cd0e02 100644 --- a/app/Http/Controllers/Admin/PtypeController.php +++ b/app/Http/Controllers/Admin/PtypeController.php @@ -24,9 +24,11 @@ class PtypeController extends Controller ]; $inputs['isMethodPost'] = $request->isMethod('post'); $inputs['list'] = Ptype::search($inputs); + if ($inputs['list']->total() > 0 && $inputs['page'] > $inputs['list']->lastPage()) { return redirect()->route('ptypes'); } + return view('admin.ptypes.list', $inputs); } @@ -41,7 +43,7 @@ class PtypeController extends Controller if ($request->isMethod('POST')) { $rules = [ 'ptype_subject' => 'required|string|max:255', - 'ptype_sort' => 'nullable|integer', + 'floor_sort' => 'nullable|integer', 'ptype_remarks' => 'nullable|string|max:255', ]; $messages = [ @@ -75,28 +77,30 @@ class PtypeController extends Controller { $ptype = Ptype::getByPk($pk); if (empty($pk) || empty($ptype)) { - abort('404'); + abort(404); } - $data = $ptype->getAttributes(); + + // 追加のドロップダウンなどがある場合 $dataList = $this->getDataDropList(); - $data = array_merge($data, $dataList); + if ($request->isMethod('POST')) { $type = false; - // ここを修正 + + // バリデーションルール $rules = [ 'ptype_subject' => 'required|string|max:255', - 'ptype_sort' => 'nullable|integer', + 'floor_sort' => 'nullable|integer', 'ptype_remarks' => 'nullable|string|max:255', ]; $messages = [ 'ptype_subject.required' => '駐輪分類名は必須です。', ]; + $validator = Validator::make($request->all(), $rules, $messages); - $requestAll = $request->all(); - $data = array_merge($data, $requestAll); + if (!$validator->fails()) { - \DB::transaction(function () use ($data, &$type, $ptype) { - $ptype->fill($data); + \DB::transaction(function () use ($request, &$type, $ptype) { + $ptype->fill($request->all()); $ptype->save(); $type = true; }); @@ -107,20 +111,33 @@ class PtypeController extends Controller $request->session()->flash('error', __('更新に失敗しました')); } } else { - $data['errorMsg'] = $this->__buildErrorMessasges($validator); + return redirect()->back() + ->withErrors($validator) + ->withInput(); } } + + // Blade に渡すときはモデルそのものを渡す if ($view != '') { - return view($view, $data); + return view($view, array_merge($dataList, ['item' => $ptype])); } - return view('admin.ptypes.edit', $data); + return view('admin.ptypes.edit', array_merge($dataList, [ + 'item' => $ptype, + 'ptype_id' => $ptype->ptype_id, + ])); } public function delete(Request $request) { $arr_pk = $request->get('pk'); - if ($arr_pk) { - if (Ptype::deleteByPk($arr_pk)) { + + // 単体削除の場合 string が来るので配列に変換 + if (!is_array($arr_pk)) { + $arr_pk = [$arr_pk]; + } + + if ($arr_pk && count($arr_pk) > 0) { + if (Ptype::whereIn('ptype_id', $arr_pk)->delete()) { return redirect()->route('ptypes')->with('success', __("削除が完了しました。")); } else { return redirect()->route('ptypes')->with('error', __('削除に失敗しました。')); diff --git a/app/Models/Ptype.php b/app/Models/Ptype.php index aeb6fe6..78c7853 100644 --- a/app/Models/Ptype.php +++ b/app/Models/Ptype.php @@ -33,6 +33,7 @@ class Ptype extends Model 'ptype_subject', 'ptype_remarks', 'operator_id', + 'floor_sort', ]; public static function search($inputs) @@ -47,7 +48,7 @@ class Ptype extends Model if (!empty($inputs['isExport'])) { return $list->get(); } else { - return $list->paginate(\App\Models\Utils::item_per_page); + return $list->paginate(20); } } diff --git a/resources/views/admin/psection/_form.blade.php b/resources/views/admin/psection/_form.blade.php index 1bb85db..c88b21c 100644 --- a/resources/views/admin/psection/_form.blade.php +++ b/resources/views/admin/psection/_form.blade.php @@ -1,172 +1,63 @@ -{{-- 駐輪場マスタ 共通フォーム --}} +@if(Session::has('success')) +