我的问题我无法通过我的 edit.blade 获取动态复选框,只有在值为1的情况下才会生效,如果是未选中的复选框通过隐藏字段提交,它将覆盖下一组复选框选中的值。
我的代码 我有一个接受订单的crud资源, create.blade 中的表单本身有一堆动态字段,通过' add-new'将新产品添加到订单中。克隆产品字段的按钮。
该表单的一部分是一堆日期复选框,工作正常并且存储得恰到好处。
我被困的地方 我已经制作了 edit.blade ,用于纠正创建订单时可能出现的任何错误。
要回拨引用日期复选框的部分,我使用了以下刀片语法(我知道它与create不同,主要是因为我试图解决问题)
@foreach($orders as $orderkey => $order)
@foreach($days as $day)
{{ Form::hidden($day.'[]', 0, array('id'=> $day.'_hidden_'.$orderkey, 'class' => 'is-checkradio')) }}
{{ Form::checkbox($day.'[]', 1, $order->{$day}, array('id'=> $day.'_'.$orderkey, 'class' => 'is-checkradio')) }}
<label for="<?php echo $day.'_'.$orderkey; ?>"><?php echo $day; ?></label>
@endforeach
@endforeach
OrderController - 更新 我必须在我的控制器中使用以下内容来更新字段,但是如果未选中复选框,它将覆盖下一个选中的值。
$customer = Customer::find($id);
foreach($customer->orders as $key => $order){
$Monday[] = $request->Monday[$key];
};
$updates = array(
'Monday' => $Monday,
);
foreach($updates['orders'] as $k => $update){
$update_order->Monday = $updates['Monday'][$k];
$update_order->save();
};
答案 0 :(得分:0)
这部分:
foreach($customer->orders as $key => $order){
$Monday[] = $request->Monday[$key];
};
创建一个数组,如果现有数据为真且,则新数据为true,保存它。否则删除它。这意味着将捕获已经取消选择的任何复选框,但任何新选中的复选框都不会被捕获。这是你的意图吗?
为什么不这样做:
$updates = array(
'Monday' => $request->Monday,
);
我可能没有完全理解您的问题所以如果您需要进一步澄清,请评论和/或修改问题,
答案 1 :(得分:0)
了解如何从Unchecked checkbox returning null value
修复它我需要将$ orderkey添加到名称[]
所以最终这起作用了:
@foreach($days as $day)
{{ Form::hidden($day.'['.$orderkey.']', null, array('id'=> $day.'_hidden_'.$orderkey, 'class' => 'is-checkradio')) }}
{{ Form::checkbox($day.'['.$orderkey.']', 1, $order->{$day}, array('id'=> $day.'_'.$orderkey, 'class' => 'is-checkradio')) }}
<label for="<?php echo $day.'_'.$orderkey; ?>"><?php echo $day; ?></label>
@endforeach