我正在尝试将复选框设为已选中
这是我的观点
;
修改 这是我的编辑控制器
<div class="form-group">
{!! Form::label('extra_services', 'Add extra services') !!}
<div class="form-group">
<?php var_dump (array($temp->extra_services))?>
@foreach($extra as $ext)
<div class="checkbox">
<label>
{!! Form::hidden('extra_services', 0) !!}
<input type="checkbox" name="extra_services[]" value="{!! $ext->id !!}"
{!! in_array($ext->id, array($temp->extra_services)) ? 'checked' : '' !!} >
{!! $ext->title !!}
</label>
</div>
@endforeach
</div>
</div>
这是我的更新控制器
public function edit($id)
{
$temp = Template::query()->findOrFail($id);
$extra = TempExtraService::all();
return view('admin.templates.tempDetails.edit', compact('temp', 'extra'));
}
当我转储public function update(Requests\TemplateRequest $request, $id)
{
$temp->extra_services = implode($request->extra_services, ',');
$temp->save();
return Redirect::back()->with('states', 'Templates has been updated successfully');
}
时,我得到了$temp->extra_services
但在视图中第一个复选框仅检查了第二个复选框,而不是它应该检查的那个。
我在这里做错了什么。答案 0 :(得分:0)
当您执行数组($ temp-&gt; extra_services)时,您没有按预期创建数组。
var_dump(array($temp->extra_services)); // shows ["1,2"]
你想要的是用逗号分隔的字符串
创建一个数组var_dump(explode(",", $temp->extra_services)); // Show [1,2]
在 in_array 中使用第二个,你应该好好去。