2016-09-15 154 views
0

我有简单的形式:检索选中的复选框,Laravel 5.2

<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

复选框状态?如果没有被选中,它将不在请求中。您已经在处理一个数组,只需使用'in_array()'来查看该键是否存在。 – Blake

+0

是的。我有5个复选框,例如,我只检查2个。所以,我需要从5个状态中获取状态。从他们中选择了哪些选项并取消选中。 –

回答

0

设置索引输入名称,然后使用它:

@foreach ($datas $key=>$data) 

<input name="data[{{$key}}]" type="checkbox" {{old("data[$key])?"checked":''}}/> 

@endforeach 
+0

不好,因为我需要显示未勾选的复选框。 –

+0

查看编辑答案 – MSS

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

所以,我有所有复选框显示为我需要。