Работа с checkbox в Opencart
Задача:сохранить в БД доступный тип контракта покупателя, указанный в админке через чекбокс. Результат выбора будем выводить в переменную $type_contract. Если выбран первый тип, то значение -1, если второй, то -2, если оба, то -3.

Во вьюшке. Размещены два чекбокса с одинаковым именем type_contract[], т.е
после отправки формы будем иметь дело с переменной
— массивом $_POST[
type_contract ] (или $this->request->post[‘type_contract’]) . Если поставлена первая галочка, то значение массива — array(1), если вторая, то array(2) , если две галочки, то array(1,2)
<input name="type_contract[]" class="form-control" type="checkbox" value="1" <?= ($type_contract==1 || $type_contract==3) ? 'checked' : ''; ?> ><span>Договор б/н</span> <input name="type_contract[]" class="form-control" type="checkbox" value="2" <?= ($type_contract==2 || $type_contract==3) ? 'checked' : ''; ?> ><span>Договор чек</span>
В контроллере. Если страница формы была только что заполнена и нажата кнопка «Соранить», то во вьюшку нужно будет выводить уже сумму всех чекбоксов через переменную $data[‘type_contract’].
if (isset($this->request->post['type_contract'])) { $data['type_contract']=0; foreach ($this->request->post['type_contract'] as $value) $data['type_contract']=$data['type_contract']+$value; } elseif (!empty($customer_info)) { $data['type_contract'] = $customer_info['type_contract']; } else { $data['type_contract'] = 0; }
Вмодели. Перед тем как записать данные в таблицу, нужно прогнать массив и в соответствии с логикой задачи обработать результат. В данном случае просто просуммировать все элементы и записать в переменную.
$type_contract=0; if(isset($data['type_contract'])){<br> foreach ($data['type_contract'] as $value) <br> $type_contract=$type_contract+$value;<br> }<br> $this->query("UPDATE " . DB_PREFIX . "customer SET type_contract='" .$type_contract .