我的形式很简单:
<form action="some_action" method="post">
<input type="checkbox" name="data[]" value="Data 1"/>
<input type="checkbox" name="data[]" value="Data 2"/>
<input type="checkbox" name="data[]" value="Data 3"/>
<button type="submit">Submit</button>
</form>
值存储在数组中,
$data = new data();
$data->checkboxes = json_encode($request->all());
$data->save();
喜欢
0 => "Data 1",
1 => "Data 2",
2 => "Data 3"
现在,我需要检索复选框状态。我进入视图解码json:
$storedCheckboxes = json_decode($data->checkboxes);
return view('some.view')->with('storedCheckboxes', $storedCheckboxes);
尝试用刀片进行操作:
<input name="data[]" type="checkbox" {{ old('data', $storedCheckboxes->checkboxes[0]) === 'Data 1' ? 'checked' : '' }}/>
但我认为这是错误的方式,因为在刀片中我应该硬编码阵列位置。它有效,但只有在位置存在的情况下才会有效。
答案 0 :(得分:0)
设置输入名称的索引,然后使用它:
@foreach ($datas $key=>$data)
<input name="data[{{$key}}]" type="checkbox" {{old("data[$key])?"checked":''}}/>
@endforeach
答案 1 :(得分:0)
谢谢Blake!
之前我曾尝试使用in_array()
,但我对参数感到困惑。现在清楚了。按我的需要工作。
<input name="data[]" type="checkbox" @if (in_array('Data 1', $storedCheckboxes->checkboxes)) checked="checked" @endif />
<input name="data[]" type="checkbox" @if (in_array('Data 2', $storedCheckboxes->checkboxes)) checked="checked" @endif />
<input name="data[]" type="checkbox" @if (in_array('Data 3', $storedCheckboxes->checkboxes)) checked="checked" @endif />
所以,我根据需要显示了所有复选框。