2015-12-08 2 views
1

Я новичок в конкретных5 и PHP.Concrete5 form-> checkboxes не работает правильно

DB.XML

 <!-- features for Row 1 --> 
     <field name="PC_Row_1_Feature_1_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_1_Feature_2_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_1_Feature_3_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_1_Feature_4_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 

     <!-- features for Row 2 --> 
     <field name="PC_Row_2_Feature_1_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_2_Feature_2_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_2_Feature_3_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 
     <field name="PC_Row_2_Feature_4_Enabled" type="L"> 
      <default value="0" /> 
      <unsigned/> 
     </field> 

edit.php

<?php 
    echo $form->checkbox("PC_Row_1_Feature_1_Enabled", 1, $PC_Row_1_Feature_1_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_1_Feature_2_Enabled", 1, $PC_Row_1_Feature_2_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_1_Feature_3_Enabled", 1, $PC_Row_1_Feature_3_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_1_Feature_4_Enabled", 1, $PC_Row_1_Feature_4_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_2_Feature_1_Enabled", 1, $PC_Row_2_Feature_1_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_2_Feature_2_Enabled", 1, $PC_Row_2_Feature_2_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_2_Feature_3_Enabled", 1, $PC_Row_2_Feature_3_Enabled); 
?> 
<?php 
    echo $form->checkbox("PC_Row_2_Feature_4_Enabled", 1, $PC_Row_2_Feature_4_Enabled); 
?> 

Я также попытался с:

echo $form->checkbox('PC_Row_1_Feature_3_Enabled', $PC_Row_1_Feature_3_Enabled, false); 

Также думали, может быть, немного JS поможет

$('.checkbox input').on('click',function(){ 
    if($(this).val() == "0"){ 
     $(this).val('1'); 
     $(this).prop('checked', true); 
    } else { 
     $(this).val('0'); 
     $(this).prop('checked', false); 
    } 
}); 

Для изменения значения и снимите флажок и т.д ...

view.php

<?php if($PC_Row_2_Feature_1_Enabled == "1") { ?> 
    <img class="ui centered image" src="<?php echo $this->getThemePath() ?>/images/tick_mark.png"> 
<?php } ?> 

Вопросы я имею что когда я проверяю или снимите это не изменение в базе данных, а затем не показывать или скрывать на вид. Я знаю, что я, вероятно, буду делать что-то не так, поэтому надеюсь, что кто-то с конкретным опытом может мне помочь.

ответ

2

Чтобы сохранить значение флажка, вы проверяете, был ли ключ установлен в вашем методе block.php save(). Метод save() позволяет изменять данные массива $ _POST перед сохранением в базе данных (например, если вы хотите подстроить() ввод).

Пример:

public function save($args) 
{ 
    $args['checkbox_example'] = isset($args['checkbox_example']) ? 1 : 0; 
    parent::save($args); 
} 

$ арг это массив $ _POST.

  • если checkbox_example ключ установлен, то значение устанавливается в 1
  • если ключ checkbox_example не установлен, то значение устанавливается в 0
Смежные вопросы