Laravel foreach select仅显示具有相同ID的选项

时间:2019-10-24 12:56:37

标签: php laravel

问题是,each的Extraoptions起作用了,但是它显示了所有eos_name字段,而不仅显示了具有相同eos_extra_id的字段。

我希望它如何工作:

我想首先选择只显示eos_name字段, eos_extra_id(共30个),然后当出现另一个复选框时,我希望该选项显示eos_name,其中id高一个。

对不起,如果我不能很好地解释它。 有人知道如何解决这个问题吗?预先感谢!

html

<label>Opties</label>
<br>
@foreach($options as $option)   
    <div>
        <input type="checkbox"
            class="option"
            id="option_{{ $optie->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>  €{{ $option->exa_price }}</label>
    </div>
    <select name="extraoptions" class="form-control">
        @foreach($extraoptions as $extraoption)
            <option value="{{ $extraoption->eos_id }}">{{ $extraoption->eos_name }}</option>
        @endforeach
    </select>
@endforeach

RegistrationController

//options
$options_ids_array = array();
$options = Extra::all();
foreach($options as $option){
    $option->exa_id = "option_" . $option->exa_id;
    $input_option = $option->exa_id;
    if(!is_null($input_option)){
        $options_ids_array[] = $input_option;
    }
}

$registration->dev_option_id = implode(",", $options_ids_array);
$registration->save();

//extra options
$extraoptions_ids_array = array();
$extraoptions = ExtraOptie::all();
foreach($extraoptions as $extraoption){
    $extraoption->eos_id = "extraoption_" . $extraoption->eos_id;
    $input_extraoption = $extraoption->eos_id;
    if(!is_null($input_extraoption)){
        $extraoptions_ids_array[] = $input_option;
    }
}

$registration->dev_option_id = implode(",", $extraoptions_ids_array);
$registration->save();

1 个答案:

答案 0 :(得分:-1)

我不确定,但请尝试让我知道会发生什么情况

在控制器中

public function view()
{
$options = Extra::all();
$extraoptions = ExtraOptie::all();
return view('yourbladefrom',compact('extraoptions','options'))
}
public function store(Request $request)
{
$option = new Extra;
$options->name=$request->name;//your product name
$options->price=$request->price;//your product price
$options->save();
$extraoptions = new ExtraOptie;
$extraoptions->eos_id=$request->eos_id;
$extraoptions->save();
}

可见

@foreach($options as $option)
            <input type="checkbox" id="check" value="{{ $option->name }}">{{ $option->name}}</option>
@endforeach
<select name="eos_extra_id" class="form-control" id="select">
        @foreach($extraoptions as $extraoption)
            <option value="{{ $extraoption->eos_extra_id }}">{{ $extraoption->eos_name }}</option>
        @endforeach
    </select>

为此使用一个jQuery

<script>
$(function(){
  $("#check").on('change',function() {
    if (!$(this).is(':checked')) {
      $("#select").prop('disabled', 'disabled');
    } else {
      $("#select").prop('disabled', false);
    }
  });
});
</script>

尝试一下,让我知道,或者如果我做错了事,也让我知道