В OpenCart 3 добавлено настраиваемое поле. Шаг 5 оформления заказа - Не получен ввод - PullRequest
1 голос
/ 18 марта 2019

Я добавил настраиваемое поле ввода текста в раздел методов оплаты в процессе оформления покупки OpenCart 3.0.3.1. Я знаю, что чего-то не хватает, потому что процесс оформления заказа завершится, но он передает значение по умолчанию для пользовательского поля вместо пользовательского значения ввода.

Значение по умолчанию устанавливается в функции Сохранить для способов оплаты. Не устанавливая его здесь, я получаю ошибку JSON, которую я не знаю, как еще обойти.

Я заблудился относительно того, что мне не хватает. Пожалуйста, может кто-нибудь сказать мне, почему значение ввода игнорируется ?? Что я могу изменить, чтобы пользовательское значение ввода передавалось вместе с остальными данными заказа?

Код My Twig для текстового поля, payment_method.php:

`<div class="form-group required">
 <label class="col-sm-2 control-label" for="input-ponumber">{{ entry_ponumber }}</label>
 <div class="col-sm-10">
 <input type="text" name="ponumber" id="ponumber" class="form-control" />
 </div> `

Добавлено:

'#collapse-payment-method input[type=\'text\']:checked' 

к сценарию Ajax в checkout.twig для включения текстового поля:

'data: $('#collapse-payment-method input[type=\'text\']:checked, #collapse-payment-method input[type=\'radio\']:checked, #collapse-payment-method input[type=\'checkbox\']:checked, #collapse-payment-method textarea'),'

Добавлены коды номеров в каталог / controller / checkout / payment_method.php:

В индексной функции:

'if (empty($this->request->post['ponumber'])) {
$data['error_warning'] = sprintf($this->language->get('error_ponumber'), $this->url->link('checkout/checkout'));
} else {
$data['error_warning'] = '';
}

if (isset($this->session->data['ponumber'])) {
$data['ponumber'] = $this->session->data['ponumber'];
} else {
$data['ponumber'] = '';
}'

В функции сохранения (в противном случае я получаю ошибку Json - неверный индекс по номеру):

'       if (!$json) {
        $this->session->data['payment_method'] = $this->session->data['payment_methods'][$this->request->post['payment_method']];

        $this->session->data['comment'] = strip_tags($this->request->post['comment']);

        if (!empty($this->request->post['ponumber'])) {
            $this->session->data['ponumber'] = $this->request->post['ponumber'];
        } else {
            $this->session->data['ponumber'] = '911';
        }

    }'

Добавлен номер в каталог / контроллер / оформить заказ / verify.php:

'$order_data['ponumber'] = $this->session->data['ponumber'];'

Добавлен номер в запросе вставки в каталоге / model / order.php:

'ponumber = '" . $this->db->escape($data['ponumber']) . "',' 

Что я пропустил? Почему значение по умолчанию 911 ponumber заканчивается в базе данных вместо пользовательского значения ввода? Пожалуйста, помогите.

Да, я занимался поиском, поиском и поиском, а предыдущие сообщения либо не помогли, либо остались без ответа. Любая и вся помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 10 апреля 2019

Ну, опубликовал это в нескольких местах, и никто, кажется, не сможет реально помочь.

Если кто-то еще застрял в этом и нуждается в настраиваемом поле в процессе оформления покупки OpenCart 3.0, например, в Заказе на покупку #, проверьте это:

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=36216

Этот разработчик потрясающий! Они создали это для меня, а затем изменили, чтобы они отображались на шаге 5 и стали более стандартными. Если вам нужно что-то подобное, они быстро реагируют и очень разумно. Проблема решена.

...