Laravel / php - 从多个复选框创建一个布尔值数组

时间:2018-01-03 17:06:54

标签: php html forms laravel checkbox

我尝试从4个复选框创建用户选择的数组,其中值为布尔值(1或0)。到目前为止我在这里:

$selections = [
        'marketing' => $request->get('marketing'),
        'promotional' => $request->get('promotional'),
        'news' => $request->get('news'),
        'feedback' => $request->get('feedback')
    ];

    foreach ($selections as $selection) {
        if ($selection === null) {
            return $selection = 0);
        }
    }
    dd($selections);

尝试通过并检查是否取消选中该复选框(null)并将其设置为零。我不认为我可以在我的表单中执行此操作,但是以下是代码:

<div class="form-group col-sm-12">
        <label>Uncheck the categories you would like to not receive emails from.</label>
        <div class="checkbox">
            <br/>
            <label>
            {{ Form::checkbox('marketing', '1', true) }}
            Marketing</label>
        </div>
        <div class="checkbox">
            <br/>
            <label>
            {{ Form::checkbox('promotional', '1', true) }}
            Promotional</label>
        </div>
        <div class="checkbox">
            <br/>
            <label>
            {{ Form::checkbox('news', '1', true) }}
            News</label>
        </div>
        <div class="checkbox">
            <br/>
            <label>
            {{ Form::checkbox('feedback', '1', true) }}
            Feedback</label>
        </div>
    </div>

2 个答案:

答案 0 :(得分:0)

从评论中迁移回答

这里的问题是缺少默认值 如果值不在请求中,$request->get()函数调用将返回null,这是未选中复选框的情况。
这个问题的一个解决方案是php中的??运算符。

$request->get('marketing') ?? 0

这基本上是说“采取'营销'的价值,如果未定义则使用价值0”。

答案 1 :(得分:0)

这是一种更新和创建复选框和切换按钮的实用方法,可在我们的网站上完美运行

 <label>

    @if($model->exists)
        <!--on edit-->
        <input type="checkbox" name="active" {{$model->active ? 'checked value="1"' : 'value="0"'}}>
    @else
       <!--on create-->
       <input  type="checkbox" name="active" checked value="{{old('active', 1)}}">
    @endif

 </label>