For a calculation I need to select the listed data and send the id values via the button. In the method I tried, when I switch pages, it only calculates the data I selected on that page. When I did research, I learned that it is necessary to keep the session. I tried something but no result. How can I reach the conclusion?
public function index(Request $request){
$selectedCheckboxes = session('selected_checkboxes', []);
$games = Game::orderBy('create_time', 'desc')->paginate(10);
return view('admin.games.index', compact('games','selectedCheckboxes'));
}
public function calculate(Request $request)
{
$request->session()->put('selected_checkboxes',json_encode($request>input('selected_checkboxes')));
$games = $request->input('selected_checkboxes');
dd($games);
}
<div class="col-xl-12 col-lg-12 col-sm-12 layout-spacing">
<div class="widget-content widget-content-area br-6 box-border">
<div class="mb-4 mt-4">
<form action="{{ route('admin.games.calculate') }}" method="POST">
@csrf
<div class="col-lg-4">
<input id="tea-submit" type="submit" class="btn btn-primary" name="submit"
value="Calculate">
</div>
<br>
<table class="table table-hover" style="width:100%">
<thead class="text-center">
<tr>
<th>Game ID</th>
</tr>
</thead>
<tbody>
<input type="hidden" name="selected_checkboxes" id="selected_checkboxes">
@foreach ($games as $game)
<tr>
<td scope="row" style="padding:20px">
<label class="control control--checkbox">
<input type="checkbox" name="checkbox[]" value="{{ $game>id}}">
<div class="control__indicator"></div>
</label>
{{ $game->id }}
</td>
</tr>
@endforeach
</tbody>
<tfoot class="text-center">
<tr>
<th>Game ID</th>
</tr>
</tfoot>
</table>
</form>
<div class="row">
<div class="col-lg-12 d-flex justify-content-center">
{{ $games->onEachSide(2)->links() }}
</div>
</div>
</div>
</div>
</div>
<script>
let selectedCheckboxes = [];
$(':checkbox').on('change', function() {
selectedCheckboxes = $('input[name="checkbox[]"]:checked').map(function() {
return this.value;
}).get();
$('#selected_checkboxes').val(selectedCheckboxes);
});
</script>