2015-11-26 2 views
1

Взяв флажок в контроллере, после обновления.Работа с флажками в контроллере

Однако я действительно борюсь с логикой. У меня в таблице БД две колонки, озаглавленные: 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

Вы можете показать свой код лезвия? –

+0

Несомненно, изменит вопрос. @MilanMaharjan - Обновлено – StuBlackett

+0

В вашем лезвии переменная совместима, и в вашем контроллере она является pack_compatible. это проблема? –

ответ

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(); 
} 
+0

Отлично. Имеет смысл разобраться и добавить 0 для непроверенных. Благодаря! – StuBlackett