近傍駅マスタ画面の修正
All checks were successful
Deploy main / deploy (push) Successful in 24s

This commit is contained in:
kin.rinzen 2025-09-19 15:21:07 +09:00
parent 26f1d82dae
commit b0ed603472
5 changed files with 148 additions and 143 deletions

View File

@ -16,7 +16,6 @@ class StationController extends Controller
$sort = $request->input('sort', 'station_id'); $sort = $request->input('sort', 'station_id');
$sort_type = $request->input('sort_type', 'asc'); $sort_type = $request->input('sort_type', 'asc');
// 許可されたソート項目のみ
$allowedSorts = [ $allowedSorts = [
'station_id', 'station_id',
'park_id', 'park_id',
@ -32,19 +31,23 @@ class StationController extends Controller
$sort_type = 'asc'; $sort_type = 'asc';
} }
// 必要カラムのみ取得 $list = Station::select([
$stations = Station::select([ 'station_id',
'station_id', 'station_neighbor_station',
'station_neighbor_station', 'station_name_ruby',
'station_name_ruby', 'station_route_name',
'station_route_name', 'park_id',
'park_id', 'operator_id',
'operator_id' 'station_latitude',
])->orderBy($sort, $sort_type)->paginate(20); 'station_longitude',
])
->orderBy($sort, $sort_type)
->paginate(20);
return view('admin.stations.list', compact('stations', 'sort', 'sort_type')); return view('admin.stations.list', compact('list', 'sort', 'sort_type'));
} }
/** /**
* 新規登録 * 新規登録
*/ */

View File

@ -11,140 +11,144 @@
</div> </div>
@endif @endif
@php
// $isEdit = 1 or 0
@endphp
<div class="card-body"> <div class="card-body">
<table class="table table-borderless"> {{-- バリデーションエラー表示 --}}
{{-- 近傍駅ID自動採番 --}} @if ($errors->any())
<tr> <div class="alert alert-danger">
<th>{{ __('近傍駅ID') }}</th> <ul class="mb-0">
<td> @foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="row">
<!-- 近傍駅ID自動採番 -->
<div class="col-3">
<label>{{ __('近傍駅ID') }}</label>
</div>
<div class="form-group col-9">
<div class="input-group">
<input type="text" name="station_id" <input type="text" name="station_id"
class="form-control text-right bg-light" class="form-control text-right bg-light"
value="{{ old('station_id', $station->station_id ?? '') }}" value="{{ old('station_id', $station->station_id ?? '') }}"
maxlength="10" readonly> maxlength="10" readonly>
</td> </div>
</tr> </div>
{{-- 駐輪場ID --}} <!-- 駐輪場ID -->
<tr> <div class="col-3">
<th>{{ __('駐車場ID') }}</th> <label>{{ __('駐車場ID') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="text" name="park_id" <input type="text" name="park_id"
class="form-control text-right bg-light" class="form-control text-right bg-light"
value="{{ old('park_id', $station->park_id ?? '') }}" value="{{ old('park_id', $station->park_id ?? '') }}"
maxlength="10" readonly> maxlength="10" readonly>
</td> </div>
</tr> </div>
{{-- 近傍駅 --}} <!-- 近傍駅 -->
<tr> <div class="form-group col-3">
<th>{{ __('近傍駅') }} <span class="text-danger"></span></th> <label class="required">{{ __('近傍駅') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="text" name="station_neighbor_station" <input type="text" name="station_neighbor_station"
class="form-control text-left" class="form-control"
value="{{ old('station_neighbor_station', $station->station_neighbor_station ?? '') }}" value="{{ old('station_neighbor_station', $station->station_neighbor_station ?? '') }}"
maxlength="10" required> maxlength="50" required>
@error('station_neighbor_station') </div>
<div class="text-danger small">{{ $message }}</div> @error('station_neighbor_station')
@enderror <div class="text-danger small">{{ $message }}</div>
</td> @enderror
</tr> </div>
{{-- 近傍駅ふりがな --}} <!-- 近傍駅ふりがな -->
<tr> <div class="form-group col-3">
<th>{{ __('近傍駅ふりがな') }} <span class="text-danger"></span></th> <label class="required">{{ __('近傍駅ふりがな') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="text" name="station_name_ruby" <input type="text" name="station_name_ruby"
class="form-control text-left" class="form-control"
value="{{ old('station_name_ruby', $station->station_name_ruby ?? '') }}" value="{{ old('station_name_ruby', $station->station_name_ruby ?? '') }}"
maxlength="10" required> maxlength="50" required>
@error('station_name_ruby') </div>
<div class="text-danger small">{{ $message }}</div> @error('station_name_ruby')
@enderror <div class="text-danger small">{{ $message }}</div>
</td> @enderror
</tr> </div>
{{-- 路線名 --}} <!-- 路線名 -->
<tr> <div class="form-group col-3">
<th>{{ __('路線名') }} <span class="text-danger"></span></th> <label class="required">{{ __('路線名') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="text" name="station_route_name" <input type="text" name="station_route_name"
class="form-control text-left" class="form-control"
value="{{ old('station_route_name', $station->station_route_name ?? '') }}" value="{{ old('station_route_name', $station->station_route_name ?? '') }}"
maxlength="10" required> maxlength="50" required>
@error('station_route_name') </div>
<div class="text-danger small">{{ $message }}</div> @error('station_route_name')
@enderror <div class="text-danger small">{{ $message }}</div>
</td> @enderror
</tr> </div>
{{-- 緯度 --}} <!-- 緯度 -->
<tr> <div class="form-group col-3">
<th>{{ __('近傍駅座標(緯度)') }} <span class="text-danger"></span></th> <label class="required">{{ __('近傍駅座標(緯度)') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="number" name="latitude" <input type="number" name="latitude"
class="form-control text-left" class="form-control"
value="{{ old('latitude', $station->latitude ?? '') }}" value="{{ old('latitude', $station->latitude ?? '') }}"
step="any" maxlength="10" required> step="any" maxlength="20" required>
@error('latitude') </div>
<div class="text-danger small">{{ $message }}</div> @error('latitude')
@enderror <div class="text-danger small">{{ $message }}</div>
</td> @enderror
</tr> </div>
{{-- 経度 --}} <!-- 経度 -->
<tr> <div class="form-group col-3">
<th>{{ __('近傍駅座標(経度)') }} <span class="text-danger"></span></th> <label class="required">{{ __('近傍駅座標(経度)') }}</label>
<td> </div>
<div class="form-group col-9">
<div class="input-group">
<input type="number" name="longitude" <input type="number" name="longitude"
class="form-control text-l" class="form-control"
value="{{ old('longitude', $station->longitude ?? '') }}" value="{{ old('longitude', $station->longitude ?? '') }}"
step="any" maxlength="10" required> step="any" maxlength="20" required>
@error('longitude') </div>
<div class="text-danger small">{{ $message }}</div> @error('longitude')
@enderror <div class="text-danger small">{{ $message }}</div>
</td> @enderror
</tr> </div>
</table>
{{-- 登録・削除 ボタン --}} </div>
<div class="text-left mt-4">
@if($isInfo)
{{-- 詳細画面:編集に遷移 --}}
<a href="{{ route('stations_edit', ['id' => $station->id]) }}" class="btn btn-lg btn-success"> {{-- 下部ボタン --}}
編集 <div class="form-group col-12 d-flex gap-2 mt-4">
</a> {{-- 登録ボタン --}}
@else <button type="submit" class="btn btn-lg btn-success mr-2">{{ __('登録') }}</button>
{{-- 新規/編集 共通フォーム --}}
<button type="submit" class="btn btn-lg btn-success">
{{ $isEdit ? '更新' : '登録' }}
</button>
{{-- 編集時のみ削除可能 --}} {{-- 削除ボタン(編集画面のみ表示) --}}
@if($isEdit && isset($station->id)) @if(!empty($station->station_id))
<form id="delete-form" method="POST" </form>
action="{{ route('stations_delete') }}" <form method="POST" action="{{ route('stations_delete') }}"
style="display:inline;"> onsubmit="return confirm('本当に削除しますか?')" class="d-inline-block">
@csrf @csrf
<input type="hidden" name="pk[]" value="{{ $station->id }}"> <input type="hidden" name="pk" value="{{ $station->station_id }}">
<button type="submit" class="btn btn-lg btn-danger ml-2" <button type="submit" class="btn btn-lg btn-danger mr-2">{{ __('削除') }}</button>
onclick="return confirm('削除してよろしいですか?')">削除</button> </form>
</form>
@endif
@endif @endif
</div> </div>
</div>
@section('scripts') </div>
<script> <!-- /.card-body -->
function confirmDelete() {
if (confirm('削除してよろしいですか?')) {
document.getElementById('delete-form').submit();
}
}
</script>
@endsection

View File

@ -24,11 +24,7 @@
<div class="card"> <div class="card">
<form method="POST" action="{{ route('stations_add') }}"> <form method="POST" action="{{ route('stations_add') }}">
@csrf @csrf
@include('admin.stations._form', [ @include('admin.stations._form', ['isEdit' => false])
'isEdit' => 0,
'isInfo' => 0,
'station' => $station ?? null
])
</form> </form>
</div> </div>
</div> </div>

View File

@ -26,11 +26,7 @@
<div class="card"> <div class="card">
<form method="POST" action="{{ route('stations_edit', ['id' => $station->station_id]) }}"> <form method="POST" action="{{ route('stations_edit', ['id' => $station->station_id]) }}">
@csrf @csrf
@include('admin.stations._form', [ @include('admin.stations._form', ['isEdit' => true])
'isEdit' => 1,
'isInfo' => 0,
'station' => $station
])
</form> </form>
</div> </div>
</div> </div>

View File

@ -23,6 +23,7 @@
<!-- Main Content --> <!-- Main Content -->
<section class="content"> <section class="content">
<div class="container-fluid"> <div class="container-fluid">
{{-- 並び替え用 hidden --}} {{-- 並び替え用 hidden --}}
<form action="{{ route('stations') }}" method="POST" id="list-form"> <form action="{{ route('stations') }}" method="POST" id="list-form">
@csrf @csrf
@ -30,15 +31,27 @@
<input type="hidden" name="sort_type" value="{{ $sort_type ?? '' }}"> <input type="hidden" name="sort_type" value="{{ $sort_type ?? '' }}">
</form> </form>
<div class="container-fluid mb20"> {{-- ボタンエリア --}}
<div class="col-lg-12 mb-3">
<button type="button" class="btn btn-sm btn-default mr10" onclick="location.href='{{ route('stations_add') }}'">新規</button> <button type="button" class="btn btn-sm btn-default mr10" onclick="location.href='{{ route('stations_add') }}'">新規</button>
<button type="button" class="btn btn-sm btn-default mr10" id="delete">削除</button> {{-- 削除 --}}
<button type="submit" class="btn btn-sm btn-default mr10"
form="form_delete" name="delete"
onclick="return confirm('選択した項目を削除しますか?');">削除</button>
<button type="submit" class="btn btn-sm btn-default mr10" form="form_export">{{ __('CSV出力') }}</button> <button type="submit" class="btn btn-sm btn-default mr10" form="form_export">{{ __('CSV出力') }}</button>
<div class="d-flex justify-content-end"> </div>
{{ $stations->appends(['sort' => $sort ?? '', 'sort_type' => $sort_type ?? ''])->links('pagination') }}
{{-- ページネーション --}}
<div class="col-lg-12">
<div class="d-flex justify-content-end mb-3">
{{ $list->appends([
'sort' => $sort ?? '',
'sort_type' => $sort_type ?? ''
])->links('pagination') }}
</div> </div>
</div> </div>
{{-- テーブル --}}
<div class="form col-lg-12"> <div class="form col-lg-12">
@if(Session::has('success')) @if(Session::has('success'))
<div class="alert alert-success alert-dismissible" role="alert"> <div class="alert alert-success alert-dismissible" role="alert">
@ -52,15 +65,7 @@
{!! Session::get('error') !!} {!! Session::get('error') !!}
</div> </div>
@endif @endif
</div>
<!-- メッセージ表示 -->
<div class="col-lg-12">
@if(session('success'))
<div class="alert alert-success alert-dismissible">{{ session('success') }}</div>
@elseif(session('error'))
<div class="alert alert-danger alert-dismissible">{{ session('error') }}</div>
@endif
</div>
<!-- ここから単一テーブル構成 ----------------------------------------- --> <!-- ここから単一テーブル構成 ----------------------------------------- -->
<div class="col-lg-12 mb20"> <div class="col-lg-12 mb20">
@ -80,12 +85,13 @@
<th class="sorting {{ ($sort=='station_neighbor_station') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_neighbor_station"><span>近傍駅</span></th> <th class="sorting {{ ($sort=='station_neighbor_station') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_neighbor_station"><span>近傍駅</span></th>
<th class="sorting {{ ($sort=='station_name_ruby') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_name_ruby"><span>近傍駅ふりがな</span></th> <th class="sorting {{ ($sort=='station_name_ruby') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_name_ruby"><span>近傍駅ふりがな</span></th>
<th class="sorting {{ ($sort=='station_route_name') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_route_name"><span>路線名</span></th> <th class="sorting {{ ($sort=='station_route_name') ? ($sort_type=='asc'?'sorting_asc':'sorting_desc') : '' }}" sort="station_route_name"><span>路線名</span></th>
<th><span>近傍駅座標(緯度)</span></th> <th>{{ __('近傍駅座標(緯度)') }}</th>
<th><span>近傍駅座標(経度)</span></th> <th>{{ __('近傍駅座標(経度)') }}</th>
</tr> </tr>
</thead> </thead>
<tbody class="bg-white"> <tbody class="bg-white">
@foreach($stations as $station) @foreach($list as $station)
<tr> <tr>
{{-- 同じセル内に チェック + 編集ボタン) --}} {{-- 同じセル内に チェック + 編集ボタン) --}}
<td class="align-middle" style="background-color:#faebd7;"> <td class="align-middle" style="background-color:#faebd7;">