установите месяц по умолчанию для параметра выбрать, если запрос отсутствует

#laravel #forms #laravel-blade

Вопрос:

У меня проблема с установкой выбранного значения по умолчанию для текущего месяца, если в форме нет запроса. Вот код в файле blade:

 <select name="month">
@php
   $currMonth = date('m');
   $currMonthName = date('F');
@endphp
                                        
@foreach($months as $month => $monthName)
   <option @if($month == request()->get('month')) selected @endif value="{{ $month }}">{{ $monthName }}</option>
@endforeach

</select>
 

массив $месяцев от контроллера.

 $months = [
   '01' => 'January',
   '02' => 'February',
   '03' => 'March',
   '04' => 'April',
   '05' => 'May',
   '06' => 'June',
   '07' => 'July',
   '08' => 'August',
   '09' => 'September',
   '10' => 'October',
   '11' => 'November',
   '12' => 'December'
 ];
 

Опция выбрать отлично работает при отправке запроса, за исключением значения по умолчанию при загрузке страницы. Я хочу установить значение по умолчанию на текущий месяц. Как этого добиться?

Комментарии:

1. $selectedMonth = request()->get('month') ?? $currMonth; и сравните с этой переменной.

2. ->get() Метод имеет 2 аргумента, ключ, который вы ищете, и значение по умолчанию, если его нет. Что-то вроде request()->get('month', date('m')) в сочетании с вашим текущим кодом должно отлично работать для вас 🙂 (или request()->get('month', $currMonth) , если вы хотите использовать переменную)

3. @Тим хорошо, это даже лучше 🙂

4. @GertB. Ха-ха, да, они оба закончили бы с одинаковым результатом, определенно приятно знать ?? , что такой вариант тоже есть 😀

5. спасибо @TimLewis, проблема решена 🙂