处理控制器中的复选框

时间:2015-11-26 16:12:14

标签: php laravel checkbox laravel-4

想要处理控制器中的复选框,一旦进行了更新。

然而,我真的在努力克服逻辑。我的数据库表中有两列标题为: pack_compatible_android &的 pack_compatible_apple

如果选中一个复选框,则我的数据库中的两个值仍会更新为1。

我怀疑我的逻辑是错误的,需要简化或简化。

我的代码如下:

    // Save The Compatible
    $pack_compatible = Input::get('pack_compatible', false);

    if($pack_compatible == false)
    {
        $pack = Pack::find($id);
        $pack->pack_compatible_apple = NULL;
        $pack->pack_compatible_android = NULL;
        $pack->save();
    }
    else
    {
        if(is_array($pack_compatible))
        {
            foreach($pack_compatible as $compatible)
            {
                if($compatible == 'apple')
                {
                    $pack = Pack::find($id);
                    $pack->pack_compatible_apple = '1';
                    $pack->save();
                }
                elseif($compatible == 'android')
                {
                    $pack = Pack::find($id);
                    $pack->pack_compatible_android = '1';
                    $pack->save();
                }
            }
        }
    }

我的刀片代码如下:

        <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                <div class="text-center">
                    <label>Compatible With <small>(For example, Apple)</small></label>
                </div><!-- /.text-center -->
                <div class="compatible-block">
                    <div class="row">
                        <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox" value="apple" name="compatible[]" class="compat" <?php if($pack_data->pack_compatible_apple == '1') { echo 'checked'; } ?>>
                                    Apple
                                </label>
                            </div>
                        </div><!-- /.col-lg-6 -->
                        <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox" value="android" name="compatible[]" class="compat" <?php if($pack_data->pack_compatible_android == '1') { echo 'checked'; } ?>>
                                    Android
                                </label>
                            </div><!-- /.checkbox -->
                        </div><!-- /.col-lg-6 -->
                    </div><!-- /.row -->
                </div><!-- /.compatible-block -->
            </div><!-- /.col-lg-12 -->
        </div><!-- /.row -->

任何人都可以在我的逻辑中看到任何问题,或者为什么它似乎没有更新其中一个?

非常感谢

1 个答案:

答案 0 :(得分:1)

问题似乎是,您只设置了选中的值,但未将未设置的值设置为0。试试这个

if(is_array($pack_compatible))
{

    $pack = Pack::find($id);
    $pack->pack_compatible_apple = NULL;
    $pack->pack_compatible_android = NULL;
    foreach($pack_compatible as $compatible)
    {
        if($compatible == 'apple')
        {
             $pack->pack_compatible_apple = '1';
        }
        elseif($compatible == 'android')
        {
              $pack->pack_compatible_android = '1';
        }
    }
    $pack->save();
}