сравнить разные идентификаторы в выбранном foreach, чтобы показать правильные параметры - PullRequest
0 голосов
/ 28 октября 2019

Таким образом, у меня есть html-форма в регистрации, где вы видите дополнительный параметр exa_name из таблицы «Extra», цену из таблицы Extra и выбор из таблицы Extraoptions, которая подключается к таблице Extra.

Проблема: select (я использую foreach) показывает все строки в Extraoptions-> eos_name, и я хочу, чтобы он отображал eos_name, где eos_extra_id совпадает с exa_id!

html form: это то, что у меня есть сейчас, я не уверен, как я могу сравнить 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 Ответ

0 голосов
/ 28 октября 2019

Похоже, вы хотите ограничить отображение $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> ничего не сделают, за исключением того, что последний выбранный параметр отображается как выбранный по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...