【问题标题】:Laravel 5.2 :get checkbox checkedLaravel 5.2:选中复选框
【发布时间】:2017-04-16 19:13:02
【问题描述】:

我正在尝试让复选框被选中

这是我的看法

<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-&gt;extra_services 时,我得到了 array(1) { [0]=&gt; string(3) "1,2" }

但在视图中,第一个复选框只选中了第二个复选框,它也不应该被选中。

我在这里做错了什么。

【问题讨论】:

  • 只是否决这个问题并不意味着我明白我的错误在哪里请描述。
  • 您需要添加更多信息。 $temp->extra_services 的内容是什么?
  • 我在我的问题中提到它是一个数组when I dump my $temp-&gt;extra_services I got array(1) { [0]=&gt; string(3) "1,2" } 无论如何都会将控制器添加到问题中
  • @Jason 看到我的问题编辑希望这会有所帮助
  • 您将 extra_services 作为单个隐藏字段,将 extra_services[] 作为数组。我很确定这是导致行为不一致的原因。

标签: php laravel checkbox laravel-5.2


【解决方案1】:

当您执行 array($temp->extra_services) 时,您并没有按预期创建数组。

var_dump(array($temp->extra_services)); // shows ["1,2"]

你想要的是从逗号分隔的字符串创建一个数组

var_dump(explode(",", $temp->extra_services)); // Show [1,2]

在你的 in_array 中使用第二个,你应该很高兴。

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2017-11-02
    • 2016-12-19
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多