想要处理控制器中的复选框,一旦进行了更新。
然而,我真的在努力克服逻辑。我的数据库表中有两列标题为: 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 -->
任何人都可以在我的逻辑中看到任何问题,或者为什么它似乎没有更新其中一个?
非常感谢
答案 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();
}