I have a filter component that lets a user filter for events on a website. The user needs to see which category is currently selected in the filter. For this there is a URL with parameters.
e.g. /events?category=1
The code will match the category to the <option>
in the <select>
.
The code:
<?php
$selected = 'selected';
if (Request::is('courses')) {
$category = '0';
if (request()->get('category')) {
[$selected, $category] = match (request()->get('category')) {
'0' => [$selected, '0'],
'1' => [$selected, '1'],
'2' => [$selected, '2'],
'3' => [$selected, '3'],
'4' => [$selected, '4'],
'5' => [$selected, '5'],
'6' => [$selected, '6'],
'7' => [$selected, '7'],
'8' => [$selected, '8'],
};
}
}
if (Request::is('events')) {
$category = '1';
if (request()->get('category')) {
[$selected, $category] = match (request()->get('category')) {
'0' => [$selected, '0'],
'1' => [$selected, '1'],
'2' => [$selected, '2'],
'3' => [$selected, '3'],
'4' => [$selected, '4'],
'5' => [$selected, '5'],
'6' => [$selected, '6'],
'7' => [$selected, '7'],
'8' => [$selected, '8'],
};
}
}
?>
<form class="container">
<div class="bg-white p-6 rounded-lg">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label class="mb-3 inline-block">Category</label>
<select aria-label="Category" name="category" class="w-full bg-gray-200 p-3 rounded-lg">
<option value="0" @if ($category === '0') Selected @endif>All</option>
<option value="1" @if ($category === '1') Selected @endif>Selected Events 1</option>
<option value="2" @if ($category === '2') Selected @endif>Selected Events 2</option>
<option value="3" @if ($category === '3') Selected @endif>Selected Events 3</option>
<option value="4" @if ($category === '4') Selected @endif>Selected Events 4</option>
<option value="5" @if ($category === '5') Selected @endif>Selected Events 5</option>
<option value="6" @if ($category === '6') Selected @endif>Selected Events 6</option>
<option value="7" @if ($category === '7') Selected @endif>Selected Events 7</option>
<option value="8" @if ($category === '8') Selected @endif>Selected Events 8</option>
</select>
</div>
<div class="flex items-end">
<x-button type="submit" class="w-full">Search</x-button>
</div>
</div>
</div>
</form>
is there any way to simplify this code? I could only think of this way, but I am still a beginner with PHP. The Categories are not stored in a DB table, so getting it from the DB is not possible.