Laravel 5.2:勾选复选框

时间:2017-04-16 10:20:39

标签: php laravel checkbox laravel-5.2

我正在尝试将复选框设为已选中

这是我的观点

;

修改 这是我的编辑控制器

<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

但在视图中第一个复选框仅检查了第二个复选框,而不是它应该检查的那个。

我在这里做错了什么。

1 个答案:

答案 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 中使用第二个,你应该好好去。