带有旧输入和默认值的Laravel复选框不能正常工作
我正在制作一个带有复选框的编辑页面,我希望拉威尔能够记住旧的输入。我在数据库中存储特定选项的1或0值带有旧输入和默认值的Laravel复选框不能正常工作,laravel,Laravel,我正在制作一个带有复选框的编辑页面,我希望拉威尔能够记住旧的输入。我在数据库中存储特定选项的1或0值 @foreach( $options['tuning'] as $key => $option) <div class="col-3 rent-car-security"> <input type="checkbox" name="{{ $option }}" id="{{ $option }}" value="1"
@foreach( $options['tuning'] as $key => $option)
<div class="col-3 rent-car-security">
<input type="checkbox" name="{{ $option }}" id="{{ $option }}"
value="1" {{ old($option, $car->tuning_options->{ $option }) ? 'checked' : '' }}>
<label for="{{ $option }}">{{ $key }}</label>
</div>
@endforeach
如果开始时选项为0,则表单可以正常工作。我的做法是从数据库中提取所选选项并将其转换为数组,示例如下: 控制器(编辑方法):
public function edit($id) {
$options = Options::all();
$selected_options = $options->pluck('id')->toArray()
return view('example.view', compact('selected_options'));
}
@foreach( $options['tuning'] as $key => $option)
<div class="col-3 rent-car-security">
<input type="checkbox" name="{{ $option }}" id="{{ $option }}" value="1" {{ in_array($option, $selected_options) ? 'selected' : '' }}>
<label for="{{ $option }}">{{ $key }}</label>
</div>
@endforeach
然后在我看来,我将执行以下逻辑:
public function edit($id) {
$options = Options::all();
$selected_options = $options->pluck('id')->toArray()
return view('example.view', compact('selected_options'));
}
@foreach( $options['tuning'] as $key => $option)
<div class="col-3 rent-car-security">
<input type="checkbox" name="{{ $option }}" id="{{ $option }}" value="1" {{ in_array($option, $selected_options) ? 'selected' : '' }}>
<label for="{{ $option }}">{{ $key }}</label>
</div>
@endforeach
@foreach($options['tuning']as$key=>$option)
{{$key}}
@endforeach
我希望这有帮助,让我知道。这是基于您提供的有限代码,纯粹是一个让您开始学习的示例-如果您提供更多,我很乐意帮助您完全解决问题我添加了一个隐藏输入,现在它工作得非常好
<input type="hidden" name="{{ $option }}" value="0">
您是否也可以为您提供编辑方法控制器代码?使用控制器代码更新谢谢-检查下面的答案-获取旧值的最佳方法是将“value”或“option id”提取到数组中,然后使用内联三元语句检查该选项值是否在数组中,以及是否为该选项赋予“选定”值我将尝试实施您的方法。但是我想知道为什么我的实现不起作用W ok-表单页面更多地使用{old()}方法,如果出现错误,它会返回表单页面,您填写的值会被记住,old()不会从数据库中获取值来填充它们,它只会记住您填写的内容