从数组Laravel 5.2中检索已选中的复选框

时间:2016-09-15 17:10:57

标签: php arrays laravel checkbox

我的形式很简单:

<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' : '' }}/>

但我认为这是错误的方式,因为在刀片中我应该硬编码阵列位置。它有效,但只有在位置存在的情况下才会有效。

2 个答案:

答案 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 />

所以,我根据需要显示了所有复选框。