Задать вопрос

Корзина, способ доставки и цена, метод пост, передача в бд при заказе, как передать цену доставки?

Всем привет. (не хватает знаний).

Есть корзина, в ней есть выбор доставки, у вариантов доставки есть цена.
С корзины выбор доставки я передаю, а вот цену доставки пока не могу передать.

Вывод способов доставки и выбор.
<h2>Выберите способ доставки</h2>
          <ul class="ac-custom ac-radio crzsm">
            <?php foreach (ORM::factory('Delivery')->find_all() as $del) : ?>
              <li><input type="radio" name="delivery" id="radio<?= $del->id ?>" value="<?= $del->name ?>"><label for="radio<?= $del->id ?>"><?= $del->name ?>
                  <? if ($del->cost > 0) : ?>
                    - <b><?= $del->cost ?> </b> руб
                  <?php endif ?></label></li>
            <?php endforeach ?>
          </ul>


При заказе, передаю и получаю.
$delivery = Arr::get($_POST, 'delivery');

Далее, там же пытаюсь вытянуть цену.
подключаюсь к таблице и прикрепляюсь к выбранному варианту доставки $delivery, чтоб с этого варианта вытянуть цену
$del = ORM::factory('Delivery', $delivery);

Вывожу цену
$del['cost'];


Как проверить выводиться цена или нет? как-то через принт можно, но как?

Далее полученную цену я хочу записать вместе с заказом в таблицу ордерс, чтобы потом эту цену вывести в заказах.
Но цена не приходит в таблицу, вот и пытаюсь понять вывожу я цену выше или нет, может просто в таблицу не передает.
$order->set('deliveryСost', $del['cost']);
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
ws17
@ws17 Автор вопроса
Как я решил задачу.

<ul class="ac-custom ac-radio crzsm">
            <input type="hidden" id="deliveryCost" name="deliveryCost" value="">

            <?php foreach (ORM::factory('Delivery')->find_all() as $del) : ?>
              <li><input type="radio" name="delivery" id="radio<?= $del->id ?>" data-price="<?= $del->cost ?>" value="<?= $del->name ?>"><label for="radio<?= $del->id ?>"><?= $del->name ?>
                  <?php if ($del->cost): ?>
                    - <b><?= $del->cost ?></b> руб
                  <?php endif ?></label>
              </li>
            <?php endforeach ?>
          </ul>


Добавил скрытый импут, в который я передаю цену.
Добавил в импут data-price, куда я вывожу цену данного выбора кнопки радио.

Скипт, для вытаскивание цена с data-price и передача в скрытый импут, чтобы через метод пост вытянуть потом эту цену.

<script>
  const $deliveryCost = data => document.querySelector('#deliveryCost').value = data;

  let $selectors = document.querySelectorAll('.crzsm input[type="radio"]');
  $selectors.forEach($radio => {
    $radio.addEventListener('change', function() {
      $deliveryCost(this.getAttribute('data-price'));
    });
  });
</script>


Далее в контроллер передаю со скрытого импута цену.
$deliveryCost = Arr::get($_POST, 'deliveryCost');

Ну и ниже где я делаю запись в бд в таблицу ордер, добавил.
$order->set('deliveryCost', $deliveryCost);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы