Итак, у меня есть html-форма при регистрации, где вы видите дополнительную опцию exa_name из таблицы «Дополнительно», цену из таблицы «Дополнительно» и выбор из таблицы «Дополнительные опции», который подключается к таблице «Дополнительно».
Проблема: выборки (я использую foreach) показывают все строки в Extraoptions->eos_name, и я хочу, чтобы он показывал eos_name, где eos_extra_id совпадает с exa_id!
html-форма: это то, что у меня есть сейчас, я не уверен, как я могу сравнить eos_extra_id и exa_id в значении параметра
//options(exa_name from the Extra table)
<label>Options</label><br>
@foreach($options as $option)
<div>
<input type="checkbox" class="option" id="option_{{ $option->exa_id }}" name="option_{{ $option->exa_id }}" value="{{ $option->exa_id }}" {{ isset($cache) ? (isset($cache['option_' . $option->exa_id]) ? 'checked' : '') : (old() ? (old('option_' . $option->exa_id) ? 'checked' : '') : ($registration ? (in_array($registration ->exa_id, $registration_options) ? 'checked' : '') : '')) }} >
<input type="hidden" value="{{ $option->exa_price }}" class="option_price_{{ $option->exa_id }}">
<label>{{ $option->exa_name }}</label> <label class="exa_price"> €{{ $option->exa_price }} </label>
</div>
//extra options select
<select name="extraoptions" class="form-control">
<option></option>
@foreach($extraoptions as $extraoption)
<option value="{{ $extraoption->eos_id }}"
{{ (exa_id('eos_extra_id') == $extraoption->eos_id ? 'selected' : "") }}>
{{ $extraoption->eos_name }}</option>
@endforeach
</select>
@endforeach
Заранее спасибо!
1 ответ
Похоже, вы хотите ограничить отображение $extraoptions
теми, которые имеют такое же exa_id
. Для этого используйте простую функцию filter()
в вызове @foreach()
:
<label>Options</label><br>
@foreach($options as $option)
<div>
<input type="checkbox" class="option" id="option_{{ $option->exa_id }}" name="option_{{ $option->exa_id }}" value="{{ $option->exa_id }}" {{ isset($cache) ? (isset($cache['option_' . $option->exa_id]) ? 'checked' : '') : (old() ? (old('option_' . $option->exa_id) ? 'checked' : '') : ($registration ? (in_array($registration ->exa_id, $registration_options) ? 'checked' : '') : '')) }} >
<input type="hidden" value="{{ $option->exa_price }}" class="option_price_{{ $option->exa_id }}">
<label>{{ $option->exa_name }}</label> <label class="exa_price"> €{{ $option->exa_price }} </label>
</div>
<select name="extraoptions" class="form-control">
<option></option>
@foreach($extraoptions->filter(function($exOpt){ return $exOpt->eos_id == exa_id('eos_extra_id'); }) as $extraoption)
<option value="{{ $extraoption->eos_id }}">{{ $extraoption->eos_name }}</option>
@endforeach
</select>
@endforeach
Чтобы уточнить, я удалил логику selected
, так как установка selected
для нескольких элементов <option>
внутри одного немножественного <select>
мало что даст, за исключением того, что последний подходящий вариант отображается как выбранный по умолчанию.
$extraoption
; $exOpt
— это просто имя переменной для использования внутри функции. Я избегал $extraoption
, так как это название каждой итерации $extraoptions
.
exa_id
в функцию (function($exOpt) use (exa_id){ ... }
, но я не думаю, что это работает с функциями, а exa_id
не является функцией в Laravel; это то, что вы (или плагин, который вы используете).
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
exa_id
? почему вы не выбрали нужные параметры перед отправкой$extraoptions
в представление?