Laravel выбирает старое и новое значение как выбрано

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

Это то, что работает, если вы хотите добавить ценность.

<select name="category_id" class="form-control" id="category">
    @foreach($category as $cat)
        <option value="{{$cat->id}}"
            {{ old('category_id', $cat->id) == $subCategory->category_id ? "selected" : "" }}>
            {{ $cat->category_en }} | {{ $cat->category_de }}</option>
    @endforeach
</select>

Однако, когда я нажимаю «обновить», оно не использует старое выбранное значение, но автоматически переходит к первому параметру в foreach.


person Nick Audenaerde    schedule 29.12.2020    source источник


Ответы (1)


используйте помощник optional () вместе с old () помощник для обработки такой ситуации.

<option value="{{ $cat->id }}" @if (old('category_id', optional($subCategory)->category_id) == $cat->id) selected @endif>{{ $cat->category_en }} | {{ $cat->category_de }}</option>

это означает, что когда он получает старое входное значение null, он будет использовать значение объекта для выбора элемента. при наличии старого входного значения будет выбрано старое входное значение. вы можете опустить необязательный помощник, он полезен, когда вы используете одну и ту же форму для создания и обновления.

person zahid hasan emon    schedule 29.12.2020
comment
Кажется, не работает :(, попытался напрямую скопировать то, что вы сказали, и попытался добавить необязательное в свою строку кода, оба этого не сделали - person Nick Audenaerde; 29.12.2020
comment
$subCategory->category_id имеет ли это какое-либо значение, совпадающее с категорией ?? - person zahid hasan emon; 29.12.2020
comment
скажем, подкатегория- ›categoy_id = 4, она получает значение, когда я правильно перехожу на экран редактирования. Причина в том, что в foreach он найдет 4 == 4, но как только вы нажмете на обновление, он использует старую подкатегорию- ›category_id вместо только что заполненной category_id - person Nick Audenaerde; 30.12.2020
comment
вы поменяли местами переменные здесь, и я полностью пропустил это. обновляю свой ответ. - person zahid hasan emon; 30.12.2020
comment
Иногда такие мелкие ошибки наблюдаются в течение нескольких дней ... Спасибо, друг мой, спасибо тебе большое! - person Nick Audenaerde; 30.12.2020