Как скрыть показ поля "флаг" если чекбокс не активен?

InstantCMS 2.X
#1 29 сентября 2022 в 11:05

Возможно ли как-то скрывать поле «флаг», если значение чекбокса неактивно? В идеале, если бы в опции поля была такая настройка, так как не всегда надо показывать значение «нет».

#2 29 сентября 2022 в 12:35

Почему нет. Теоретически да. Можно например с помощью стилей и js. Или написать хук, который будет проверять поле и менять его тип.

#3 29 сентября 2022 в 12:44

Почему нет. Теоретически да. Можно например с помощью стилей и js. Или написать хук, который будет проверять поле и менять его тип.

Lora

что для этого может понадобиться от меня, если я сам не могу это сделать?)

#4 29 сентября 2022 в 13:17

что для этого может понадобиться от меня, если я сам не могу это сделать?)

Def

Не знаю. Деньги наверное. Но вроде как то была тема на тему скрытия поля. Может стоит поискать?

Добавлено спустя 14 минут
  1. <?php
  2. ?>
  3. <script>
  4. var field = document.querySelector('.f_test');
  5. var val = $(field).find('.value');
  6. if(val.text()=='Нет')$(field).addClass('hidden')
  7. </script>
  8. <?php
  9. $this->addBottom(ob_get_clean());
  10. ?>

В конце файла \templates\modern\content\default_item.tpl.php этот код.

Вместо test системное имя вашего поля флаг. Класс hidden должен скрыть поле, поэтому пропишите для него соответствующее правило.

#5 29 сентября 2022 в 13:31

1. В папке templates/modern/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки

и/или

в папке templates/default/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки.

2. В папке system/fields создать файл newcheckbox.php с таким содержимым:

  1. <?php class fieldNewcheckbox extends cmsFormField {
  2.  
  3. public $title = 'Новый чекбокс';
  4. public $sql = 'TINYINT(1) UNSIGNED NULL DEFAULT NULL';
  5. public $filter_type = 'int';
  6. public $var_type = 'integer';
  7.  
  8. public function getOptions(){
  9.  
  10. return [
  11. new fieldCheckbox('not_value', [
  12. 'title' => 'Если чекбокс не отмечен, выводить слово "Нет"'
  13. ])
  14. ];
  15.  
  16. }
  17.  
  18. public function parse($value){
  19.  
  20. $not_value = $this->options['not_value'] ? LANG_NO : '';
  21.  
  22. return ($value ? LANG_YES : $not_value);
  23. }
  24.  
  25. public function applyFilter($model, $value) {
  26. return $model->filterEqual($this->name, 1);
  27. }
  28.  
  29. }

3. Заменить поле «Флаг» на это поле.

#6 29 сентября 2022 в 20:16

1. В папке templates/modern/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки

и/или

в папке templates/default/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки.

2. В папке system/fields создать файл newcheckbox.php с таким содержимым:

  1. <?php class fieldNewcheckbox extends cmsFormField {
  2.  
  3. public $title = 'Новый чекбокс';
  4. public $sql = 'TINYINT(1) UNSIGNED NULL DEFAULT NULL';
  5. public $filter_type = 'int';
  6. public $var_type = 'integer';
  7.  
  8. public function getOptions(){
  9.  
  10. return [
  11. new fieldCheckbox('not_value', [
  12. 'title' => 'Если чекбокс не отмечен, выводить слово "Нет"'
  13. ])
  14. ];
  15.  
  16. }
  17.  
  18. public function parse($value){
  19.  
  20. $not_value = $this->options['not_value'] ? LANG_NO : '';
  21.  
  22. return ($value ? LANG_YES : $not_value);
  23. }
  24.  
  25. public function applyFilter($model, $value) {
  26. return $model->filterEqual($this->name, 1);
  27. }
  28.  
  29. }

3. Заменить поле «Флаг» на это поле.

Нифигаccе о-го-гошеньки

Вы как всегда гений!

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.