Перейти к содержимому


Фото
- - - - -

Некорректно работает доп. checkbox для варианта


  • Чтобы отвечать, сперва войдите на форум
3 ответов в теме

#1 AFI

AFI
  • Пользователь
  • 99 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 28.01.2019 - 21:01

Нужно добавить checkbox для варианта,
1. Добавил checkbox в шаблон

<input name="variants[export][]" value="1" type="checkbox"{if $variant->export} checked{/if}/>

2. Добавил колонку export TINYINT(1) DEFAULT 0 в БД таблица s_variants
3. Добавил вывод колонки в Variants.php

Проблема, если checkbox выбран значение записывается в БД, а если снять метку, то новое значение не сохраняется.(с 0 на 1 меняется, а обратно нет)
В чем проблема?



#2 phukortsin

phukortsin
  • Фрилансер
  • 729 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 28.01.2019 - 21:10

Причина в особенностях работы чекбокса, точнее в особеностях отправки формой его значения на сервер. При значении 0 не передается НИЧЕГО. Простейший способ решения вопроса - заменить чекбокс на select.



#3 AFI

AFI
  • Пользователь
  • 99 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 28.01.2019 - 21:11

Насколько будет правильно если я сделаю вот так

Причина в особенностях работы чекбокса, точнее в особеностях отправки формой его значения на сервер. При значении 0 не передается НИЧЕГО. Простейший способ решения вопроса - заменить чекбокс на select.
 

if ($this->request->post('variants'))
{
    $v = $this->request->post('variants');
    if (!in_array('export', $v))
    {
        $v['export'][] = 0;
    }

    foreach($v as $n => $va)
    {
        foreach($va as $i => $v)
        {
            if (empty($variants[$i]))
            {
                $variants[$i] = new stdClass;
            }

            $variants[$i]->$n = $v;
        }
    }
}

Изменено: AFI, 28.01.2019 - 21:25


#4 phukortsin

phukortsin
  • Фрилансер
  • 729 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 28.01.2019 - 21:29

Пробуйте, тестируйте.

Скорее всего, это не даст ничего хорошего...






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых