Работа с 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 .

Полезные ссылки

http://dnzl.ru/view_post.php?id=182

Print Friendly, PDF & Email

Добавить комментарий