我使用以下内容检查复选框是选中还是取消选中:
我的观点:
{{ Form::hidden('unchecked[]', $product->id) }}
{{ Form::checkbox('checkbox[]', $product->id) }}
我的控制器:
public function checkbox()
{
$checkedIDs = Input::get('checkbox');
$uncheckedIDs = Input::get('unchecked');
if(is_array($uncheckedIDs))
{
Products::whereIn('id',$uncheckedIDs)->update(['checked' => '0']);
}
if(is_array($checkedIDs))
{
Products::whereIn('id',$checkedIDs)->update(['checked' => '1']);
}
return Redirect::to('index');
}
这很有效!但是......我还有一些隐藏字段,只有在单击复选框时才会出现。我可以选择的一系列数字的下拉列表。一旦我选中了一个复选框,就会出现下拉列表并从该下拉列表中选择一个数字,然后点击提交。使用以下代码,所有内容都保存在数据库中:
public function checkbox()
{
$checkedIDs = Input::get('checkbox');
$uncheckedIDs = Input::get('unchecked');
$checkedNumbers = Input::get('number');
if(is_array($uncheckedIDs))
{
Products::whereIn('id',$uncheckedIDs)->update(['checked' => '0']);
}
if(is_array($checkedIDs))
{
Products::whereIn('id',$checkedIDs)->update(['checked' => '1']);
foreach($checkedNumbers as $id => $number) Products::where('id',$id)->update(['number'=>$number]);
}
return Redirect::to('index');
}
因此,这实际上遍历已提交的所有number []值并相应地更新数据库。到目前为止,一切都按我的意愿运作。
现在问题。当我再次打开表单时,会检查先前保存的复选框,并且相应的下拉列表也会显示数字。取消选中一个复选框并保存后,该数字不会被删除,而一旦我再次打开表单,复选框就会取消选中。我基本上需要的是,以下位代码只能更新被检查复选框中的数字:
foreach($checkedNumbers as $id => $number) Products::where('id',$id)->update(['number'=>$number]);
但到目前为止,我还没弄清楚如何实现这一目标。有什么指针吗?
答案 0 :(得分:0)
修正了它,用它来检查是否选中了复选框。
查看:
{{ Form::hidden('checkbox['.$product->id.']', '0') }}
{{ Form::checkbox('checkbox['.$product->id.']', $product->id) }}
控制器:
public function checkbox()
{
$checkboxes = Input::get('checkbox');
foreach ($checkboxes as $key => $value)
{
if($value !== '0')
{
Products::where('id', '=', $key) ->update(['chkupdate' => '1']);
}
else {
Products::where('id', '=', $key) ->update(['chkupdate' => '0']);
}
}
return Redirect::to('index');
}