Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有旧输入和默认值的Laravel复选框不能正常工作_Laravel - Fatal编程技术网

带有旧输入和默认值的Laravel复选框不能正常工作

带有旧输入和默认值的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"

我正在制作一个带有复选框的编辑页面,我希望拉威尔能够记住旧的输入。我在数据库中存储特定选项的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

如果开始时选项为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()不会从数据库中获取值来填充它们,它只会记住您填写的内容