如何将视图中的复选框值传递给控制器,以便我可以比较已检查/未检查的值(用于数据库更新)?
查看:
@foreach ($second as $sec)
<br>
<div class = "form-group">
{{$sec->Roll }}
    
{{ $sec->Name}}
</div>
<div class = "form-group">
<input tabindex="1" type="checkbox" value="{{$sec->Roll}}" name="1" />
</div>
@endforeach
控制器:
foreach ($columns as $col) {
//dd("Y");
if($col == $txt[1]) {
$got=DB::table($req)->select($col)->get();
//dd($got);
//COMPARE CHECKBOX VALUE "CHECKED/UNCHECKED" WITH ITS DEFAULT VALUE
DB::statement("UPDATE " . $req . " set " . $got . " to " . $got . " + 1 WHERE" .$req->Roll . " IN ".( implode(',', $req)));
}
}
答案 0 :(得分:0)
Ps:这可能只适用于我的描述符合您要做的事情,因为您的问题似乎如此。
我做的一种方法是不在checkbox元素中添加任何值。然后检查返回的值是否是带有is_string($ the_variable)的字符串。也就是说,而不是:
<input tabindex="1" type="checkbox" value="{{$sec->Roll}}" name="checkbox_1" />
我会:
<input tabindex="1" type="checkbox" name="checkbox_1" />
这可能不是一个理想的解决方案,但如果您尝试过它会有点好奇。 因此,在控制器中,任何选中的复选框都会打开&#39;作为值,虽然未选中,但会有null:
所以,如果我在我的控制器中:
return request()->all();
我应该将已选中的值设为&#39; on&#39;以及未选中的值null
所以我会在控制器中做到这一点:
if(is_string(request()->get('checkbox_1))) {
//checked
else {
// unchecked
}
希望现在很清楚。
只是为了更新:
另一种方法是在制作foreach时传递要更新的列的键,这样你就会有这样的事情:
@foreach ($second as $key=> $sec)
然后在复选框上它将作为不同的名称:
<input tabindex="1" type="checkbox" name="{{ $key }}" />
这样,如果您在控制器的第一个处返回request()->all();
,则可以判断是否有其他错误。
请务必记下该foreach()中的$key
,以确保您做的正确。