我认为这是:
我的数据库中只有一个字段,即driverslicensetype
如何将其保存到数据库中,以便用户选择的任何类型都可以保存所选择的类型:
/* ABCD
*
* A: 0 No 1 AM 2 A1 3 A2 4 A;
* B: 0 No 1 B1 2 B 3 BE
* C: 0 No 1 C1 2 C1E 3 C 4 CE
* D: 0 No 1 D1 2 D1E 3 D 4 DE
*/
因此,如果用户选择A和B,则只保存的数字应为3300
B和C为3230
A B C D将是3233
B C1将是0210
依此类推,我希望你能理解。
所以我在我看来已经做到了这一点:
<div class="col">
<?php
$driverslicense_types = [
'AM',
'A1',
'A2',
'A',
'B1',
'B',
'BE',
'C1',
'C1E',
'C',
'CE',
'D1',
'D1E',
'D',
'DE'
]
?>
@foreach($driverslicense_types as $type)
<div class="col-md-3">
{!! Form::checkbox('driverslicense_type'.$type,'1', false, ['id'=>'driverslicense_type'.$type, 'class' => 'checkbox-style']) !!}
{!! Form::label('driverslicense_type'.$type, $type, ['id'=>'driverslicense_type'.$type, 'class'=>'checkbox-style-3-label']) !!}
</div>
@endforeach
</div>
所以现在我不知道如何在我的控制器中保存这个,任何人都可以帮忙吗?
答案 0 :(得分:1)
首先要记住的是,未在表单上检查的复选框不会发布到脚本中。
其次,如果您将所需的值放在value=""
属性中而不是您正在使用的默认值1
,那么您将从表单中获得一些有用的数据
从您的类型数组开始,并为每个类型代码指定正确的值。
/* ABCD
*
* A: 0 No 1 AM 2 A1 3 A2 4 A;
* B: 0 No 1 B1 2 B 3 BE
* C: 0 No 1 C1 2 C1E 3 C 4 CE
* D: 0 No 1 D1 2 D1E 3 D 4 DE
*/
$dl_types = [
'aaas' => ['AM'=>1, 'A1'=>2, 'A2'=>3, 'A'=>4],
'bees' => ['B1'=>1, 'B'=>2, 'BE'=>3],
'cees' => ['C1'=>1, 'C1E'=>2, 'C'=>3, 'CE'=>4],
'dees' => ['D1'=>1, 'D1E'=>2, 'D'=>,3 'DE'=>4]
]
现在使用它将值加载到表单上的value=""
属性中,用于每个复选框。
我的Laravel非常生疏,所以请检查一下,如果我在这里语法错误,请不要打扰我
@foreach($dl_types as $name => $subarray)
@foreach ($subarray as $type => $value)
<div class="col-md-3">
{!! Form::checkbox($name.'[]',$value, false, ['id'=>'driverslicense_type'.$type, 'class' => 'checkbox-style']) !!}
{!! Form::label('driverslicense_type'.$type, $type, ['id'=>'driverslicense_type'.$type, 'class'=>'checkbox-style-3-label']) !!}
</div>
@endforeach
@endforeach
现在发布表单时,您应该在$_POST
$_POST['aaas'][....]
$_POST['bees'][....]
$_POST['cees'][....]
$_POST['dees'][....]
每个子数组的子数组都包含您在每个value=""
属性中放置的复选框的值。
正如您在另一个答案中所说的那样,您只需要每个类别中最大的答案来获得您想要的答案,无论例如检查了多少aaas
,您就可以为每个类别执行此操作
$result_string = ''; // init the string
if ( !isset($_POST['aaas'] ) {
// nothing in the A set was checked
$result_string .= '0';
} else {
$result_string .= $_POST['aaas'][count($_POST['aaas']-1);
}
if ( !isset($_POST['bees'] ) {
$result_string .= '0';
} else {
$result_string .= $_POST['bees'][count($_POST['bees']-1);
}
if ( !isset($_POST['cees'] ) {
$result_string .= '0';
} else {
$result_string .= $_POST['cees'][count($_POST['cees']-1);
}
if ( !isset($_POST['dees'] ) {
$result_string .= '0';
} else {
$result_string .= $_POST['dees'][count($_POST['dees']-1);
}
您最终应该得到一个包含4个数字字符的结果字符串,您可以将其存储到数据库中。