具有旧输入和默认值的Laravel复选框无法正常工作

时间:2019-04-11 08:57:59

标签: 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" {{ old($option, $car->tuning_options->{ $option }) ? 'checked' : '' }}>
        <label for="{{ $option }}">{{ $key }}</label>
    </div>
@endforeach

控制器

private $tuning_options = [
  'Made for racing' => 'made_for_racing',
  'Increased engine power' => 'increased_engine_power'
];
------------
$options = [
  'tuning' => $this->tuning_options
];

return view('cars.edit', compact(['car', 'options']));

如果开头的选项为0,则表单可以正常工作

2 个答案:

答案 0 :(得分:3)

我的方法是从数据库中选择选定的选项,然后将它们转换成数组,如下所示:

控制器(编辑方法):

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

我希望能有所帮助,让我知道。这是基于您提供的有限代码,纯粹是一个入门的示例-如果您提供更多的代码,我很乐意帮助您完全解决问题

答案 1 :(得分:0)

我添加了一个隐藏的输入,现在它可以完美运行

<input type="hidden" name="{{ $option }}" value="0">