Проверка checkbox на нажатие (Расширение модуля доставки)

Тема в разделе "OpenCart", создана пользователем Shket, 24 сен 2015.

  1. Shket

    Shket

    Регистрация:
    21 сен 2015
    Сообщения:
    58
    Симпатии:
    11
    Уважаемые знатоки !

    Вчера курил день и ночь валидацию чекбокса .. и пытался засунуть это все в движок (ocstore 0.1.7)

    В общем задача:
    Есть несколько типов доставки (там радиокнопки стоят):
    Хочу добавить под кажый пункт с радиокнопкой поле с чекбоксом (Типа улуга - курьер приедет сам за деньгами к клиенту)

    Так вот ..

    В шаблоне втыкаю чекбоксы после радиокнопок

    Код:
    <?php if (!$shipping_method['error']) { ?>
              <?php foreach ($shipping_method['quote'] as $quote) { ?>
              <tr>
                <td width="1"><label for="<?php echo $quote['id']; ?>">
                    <?php if ($quote['id'] == $shipping) { ?>
                    <input type="radio" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" checked="checked" style="margin: 0px;" />
                    <?php } else { ?>
                    <input type="radio" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" style="margin: 0px;" />
                    <?php } ?>
                  </label></td>
                <td width="534"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['title']; ?></label></td>
                <td width="1" align="right"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['text']; ?></label></td>
              </tr>
    
              <tr>
                <td width="1">
                    <input type="checkbox" name="checkme" />
    </td>
                <td width="534"><?php echo $quote['title_nal']; ?></td>
                <td width="1" align="right"><?php echo $quote['text_n']; ?></td>
              </tr>
    Затем правлю скрипт доставки:

    В общем не буду сильно углубляться .. но все встало на моменте проверки чекбокса (нажат \ не нажат)
    Если нажат: прибавить сумму к тоталу
    Если нет: оставить прежней

    Валидация:
    Код:
    function checkbox_verify($_name)
    {
    $result=0;
    if (isset($_REQUEST[$_name]))
    { if ($_REQUEST[$_name]=='on') { $result=1; } else { $result=0; }
    }
    return $result;
    }
    Эту функцию прописал в тот же файлик, где и расчет доставки идет - и там же она и вызывается

    Вся трабла в том, что всегда значение возвращается 0 (как бы я ни крутил эту функцию, и откуда бы ни вызывал ее)
    даже если изначально поставили checkbox="checked"

    Нижайше прошу хэлпа )
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    HTML:
    <input type="checkbox" name="checkme" />
    Не хватает value (хотя бы пустого).

    И вы уверены, что в $_name правильное имя поля (checkme)?
     
  3. Shket

    Shket

    Регистрация:
    21 сен 2015
    Сообщения:
    58
    Симпатии:
    11
    т.е должно быть так ?:
    Код:
    [$_name]=='checkme'
    и
    Код:
    <input type="checkbox" name="checkme" value="" />
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Нет, я говорил о том, что в $_name должно быть checkme, а с $_REQUEST[$_name] всё правильно.
    Кстати, там блок else не нужен: у вас переменная $result изначально установлена в 0.

    В общем, выведите в лог значение $_REQUEST[$_name] и тогда будет понятно, проблема в том, что из формы значение не передаётся или здесь неправильно обрабатывается.
    И вообще, лучше избегать использования $_REQUEST - это может вызывать конфликты и добавлять лишних уязвимостей. Используйте $_POST.