Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

stasonsky

Users
  
  • Posts

    51
  • Joined

  • Last visited

Everything posted by stasonsky

  1. Как можно сделать, чтобы товары со статусом "нет в наличии" были в конце списка? Есть решения, но они касаются количества (остатка) товара. Можно ли сделать, чтоб определяло именно статус товара и отправляло в конец списка? Переделывался статус товара и он теперь не зависит от остатка, а берется из выставленного в админке статуса товара при его отсутствии.
    Жаль нет такого же модуля, который сортирует не по количеству, а по статусу наличия
  2. Opencart 2.1.0.2 В админке при изменении статуса заказа в режиме просмотра (при нажатии кнопки "Добавить историю") выдает окошко с надписью "error" и кнопкой OK. В файле error.log ничего при этом не записывает. Кто может помочь в решении проблемы?
  3. Точно! Заработало! Огромное спасибо!
  4. Подскажите, пожалуйста, как правильно добавить новый массив контроллер order.php (в админке)? В модели создал функцию: public function getMyVars($order_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_variables WHERE order_id = '" . (int)$order_id . "'"); return $query->rows; } Составил массив по аналогии с существующими: $data['order_vars'] = array(); $my_vars = $this->model_sale_order->getMyVars($this->request->get['order_id']); foreach ($my_vars as $my_var) { $data['order_vars'][] = array( 'var_id' => $my_var['var_id'], 'var1' => $my_var['var1'] ); } Но при вызове переменных в шаблоне получается "Undefined...". <?php foreach ($my_vars as $my_var) { ?> <?php echo $data['var1']; ?> <?php } ?> Куда только не подставлял массив в контроллере - безрезультатно. Подскажите? куда правильно подставить массив в файле order.php и правильно ли он составлен.
  5. такая форма только одна, есть еще <form class="form-horizontal">, но эта повлиять не могла, еще есть <input type="checkbox>, а также несколько textarea, но никаких совпадений по названиям нет. смотрел, там пусто
  6. Появилась интересная проблема. Я взял скрипт загрузки файла "из коробки" (версия 2.1). На локальном сервере всё работает как положено, но после установки на другой (реальный) сайт той же версии появилась проблема, что при нажатии на кнопку (button type="button" id="button-upload"), после которой появляется форма для отправки файла и включается триггер на нажатие появившегося (input type="file"), дважды появляется диалоговое окно выбора файла. Первый раз после выбора файла, название его не фиксируется в (input type="file"), а второй раз уже фиксируется и срабатывает условие на появившееся значение в поле input и файл загружается. Кто может подсказать в чем может быть проблема? Как решение подобных ситуаций предлагают использовать event.preventDefault() и event.stopPropagation(), но то ли я не так/не там их применял, то ли проблема в чем-то другом. Вот сам скрипт: $(document).ready(function() { $('#button-upload').on('click', function() { $('#form-upload').remove(); $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>'); $('#form-upload input[name=\'file\']').trigger('click'); if (typeof timer != 'undefined') { clearInterval(timer); } timer = setInterval(function() { if ($('#form-upload input[name=\'file\']').val() != '') { clearInterval(timer); $.ajax({ url: 'index.php?route=catalog/download/upload&token=<?php echo $token; ?>', type: 'post', dataType: 'json', data: new FormData($('#form-upload')[0]), cache: false, contentType: false, processData: false, beforeSend: function() { $('#button-upload').button('loading'); }, complete: function() { $('#button-upload').button('reset'); }, success: function(json) { if (json['error']) { alert(json['error']); } if (json['success']) { alert(json['success']); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); } }, 500); }); });
  7. В голове сразу возникло "А чё, так можно было, что ли?" Спасибо! Без вас бы не справился, вы очень помогли!
  8. @Prooksius , я переписал id для кнопок и для input, чтоб они были уникальными. <input type="text" name="order_note" id="note-<?php echo $product['order_product_id']; ?>" value="" class="form-control" /> Подскажите, как в запросе в "data" указать использовать нужный $product['order_product_id'] (из цикла " foreach ($products as $product)", который формирует поля input) data: {'order_product_note': $('#note-<?php echo $product['order_product_id']; ?>').val(), 'order_product_id' : ???}, Значение 'order_product_note' берет из input правильно, а как присвоить нужный 'order_product_id' не пойму
  9. переписал ID input <input type="text" name="order_note" id="<?php echo $product['order_product_id']; ?>" value="" class="form-control" /> Теперь ID совпадает с ID продукта. Но как теперь это правильно указать в ajax запросе в строке data: {'order_product_note': $('#order-note').val(), 'order_product_id': $('#order-product-id').val()},
  10. Будет текст. Тогда формат (string)$order_product_note ? В БД я указал формат varchar Спасибо! Буду сейчас пробовать
  11. @fanatic , спасибо за ответ просто получается, что в моем примере циклом foreach создается несколько таких полей с одинаковым идентификатором id="order_note" В текстовом формате или html. В бд я указал формат varchar
  12. Здравствуйте. Подскажите, пожалуйста, как составить AJAX запрос для записи значения из поля input в БД при нажатии кнопки. В файле admin/view/template/sale/order_info.tpl есть таблица и поле input с кнопкой <table class="table"> <?php foreach ($products as $product) { ?> <tr> <td> ... <td> <input type="text" name="order_note" id="order_note" value="<?php echo $product['order_product_note']; ?>" class="form-control" /> <button type="button" id="button-refresh" class="btn btn-primary"></button> </td> ... Значение должно вносится в созданную колонку в БД oc_order_product в строку с соответствующим $product['order_product_id']. Перечитал уже кучу всего, но не могу понять как в моем случае правильно составить ajax запрос. Как указать, чтоб ajax запрос передал значение $product['order_product_note'] из поля input и значение $product['order_product_id'], которое используется при создании ячейки таблицы, в котором это поле находится, для того чтоб потом вписать значение в БД в модели. Запись в БД планирую сделать так public function updateNote($order_product_id, $order_product_note) { $this->db->query("UPDATE " . DB_PREFIX . "order_product SET order_product_note = '" . (int)$order_product_note . "' WHERE order_product_id = '" . (int)$order_product_id . "'"); } cам запрос (понятное дело неверный) но примерно будет такой $(document).ready(function() { $('#button-refresh').on('click', function() { //активация функции при нажатии на кнопку с id='button-refresh' $.ajax({ url: 'index.php?route=sale/order/updateNote&token=<?php echo $token; ?>// адрес функции updateNote в файле order.php в папке sale (нужен ли токен ?) type: 'post', dataType: 'json', // нужно ли указывать именно json? data: 'order_product_note':$('#order-note').val(), // по идее должно записать значение из интпут, но как оно поймет из какого именно поля брать success: function(data){ // тут не знаю что указывать в скобках if (data){ alert('Заметка добавлена'); } else { alert('Ошибка записи'); } } }); }); }); и как обработать такой запрос в контроллере тоже не знаю(
  13. Подскажите, пожалуйста, как составить AJAX запрос, чтоб из поля input (admin/view/template/sale/order_info.tpl) при нажатии на кнопку, значение order_product_note из поля input вносились в таблицу БД (oc_order_product) с соответствующим order_product_id. <input type="text" name="order_note" id="input-note" class="form-control" /> <button type="button" id="button-refresh" data-toggle="tooltip" title="обновить" class="btn btn-primary"></button> Функцию в (admin/model/sale/order.php) для записи значения создал так: public function updateNote($order_product_id, $order_product_note) { $this->db->query("UPDATE " . DB_PREFIX . "order_product SET order_product_note = '" . (int)$order_product_note . "' WHERE order_product_id = '" . (int)$order_product_id . "'"); }
  14. допустим в tpl будет такой AJAX запрос $('#button-refresh').on('click', function() { //условие выполнения - нажатие на кнопку с id="button-refresh" var noteId = $(this).data('id'); //переменная для записи значения, не знаю нужно или нет $.ajax({ url: 'index.php?route=sale/order/updateNote', //путь: папка (admin/controller/sale)/файл order.php/function updateNote type: 'POST', data: {order_product_id: noteId}, //привязка id товара к id переменной, если я правильно понимаю success: function(data) { if (data){ alert('Заметка добавлена'); } else { alert('Ошибка записи'); } } }); }); он правильно составлен? чтоб потом в контроллере admin/controller/sale/order.php прописать функциюpublic function updateNote() {
  15. Вы не подскажете как написать простейший AJAX запрос, который после нажатия кнопки с id="button-refresh" перезапишет данные из поля input в ячейку БД ? К примеру есть поле с кнопкой, которое выводит уже существующее значение из БД. Нужно по нажатию кнопки обновить вписанное в него значение. <input type="text" name="order_note" value="<?php echo $product['order_product_note']; ?>" class="form-control" /> <button type="button" id="button-refresh" data-toggle="tooltip" title="обновить" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary"><i class="fa fa-refresh"></i></button>
  16. В админке, при просмотре заказа, хочу сделать редактируемым поле с отметками. Данные будут храниться в БД, а в поле можно будет перезаписывать значение. Для этого в таблице order_product создал дополнительный столбец order_product_note. Вывел его в таблицу списка заказанных товаров. Теперь стоит задача сделать это поле редактируемым. На просторах интернета нашел код и пытаюсь адаптировать его под свою задачу, но безрезультатно. Может кто подсказать что не так и как сделать, чтоб было так. Привожу пример кода: в модели admin/model/sale/order.php : public function editField($field, $value, $order_product_id) { $table = DB_PREFIX . "order_product"; $where = ''; $value = $this->db->escape($value); $this->db->query("UPDATE " . $table . " SET " . $field . " = '" . $value . "' WHERE order_product_id = '" . (int)$order_product_id . "'" . $where); $query = $this->db->query("SELECT " . $field . " FROM " . $table . " WHERE order_product_id = '" . (int)$order_product_id . "'" . $where); return $query->row[$field]; } в контроллере admin/controller/sale/order.php : public function editField() { $json = array(); $json['error'] = false; $this->load->model('sale/order'); $this->language->load('sale/order'); if (isset($this->request->get['order_product_id']) && isset($this->request->get['field']) && isset($this->request->get['value'])) { $order_product_id = $this->request->get['order_product_id']; $field = $this->request->get['field']; $value = $this->request->get['value']; $newvalue = html_entity_decode($this->model_sale_order->editField($field, $value, $order_product_id), ENT_QUOTES, 'UTF-8'); $json['value'] = $newvalue; } else { $json['error'] = ''; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } в admin/view/template/sale/order_info.tpl : <script type="text/javascript"> $('.editable-field').on('click', function(){ var splitted = $(this).attr('id').split('-'); var order_product_id = splitted[1]; var field = splitted[0]; var save_button = '<button data-field="'+field+'" data-id="'+order_product_id+'" id="save-field" type="button" class="btn btn-primary"><i class="fa fa-save"></i></button>'; $('.popover').popover('hide', function() { $('.popover').remove(); }); $(this).popover({ html: true, placement: 'bottom', trigger: 'manual', content: function() { return input.replace('%value',escapeQuot($(this).text())); } }); $(this).popover('show'); }); function escapeQuot(text) { return text .replace(/"/g, "&quot;") .replace(/'/g, "&#039;"); } function unescapeQuot(text) { return text .replace('&quot;', '"') .replace('&#039;', "'"); } $('tbody').on('click', '#save-field', function(){ var order_product_id = $(this).data('id'); var field = $(this).data('field'); var value = $('#field'+order_product_id).val(); var data = { order_product_id : order_product_id, field : field, value : unescapeQuot(value), }; $.ajax({ url: 'index.php?route=sale/order/editfield&token=<?php echo $token; ?>', data: data, dataType: 'json', success: function(json) { if (json['error']){ alert(json['error']); } else { $('#'+field+'-'+order_product_id).text(json['value']); } }, error: function(jqXHR, textStatus, errorThrown) { alert(textStatus, errorThrown); } }); $('.popover').remove(); }); </script> и само поле: <span id="order_product_note-<?php echo $product['order_product_id']; ?>" class="editable-field"><?php echo $product['order_product_note']; ?></span>
  17. в контроллере есть массив $data['order_products'][] = array( а есть $data['products'][] = array( в который и надо было вставить переменную 'order_product_note' => $product['order_product_note'] Теперь нормально выводятся значения из бд oc_order_product Всем отписавшимся - спасибо, ошибка была с моей стороны(
  18. Notice: Undefined index: order_product_note in \admin\view\template\sale\order_info.tpl on line 210 <?php echo $product['order_product_note']; ?> Как пользоваться и как посмотреть? Можно чуть подробнее?
  19. шаблон дефолтный конкретно getOrderProducts: public function getOrderProducts($order_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); return $query->rows; }
  20. в модели: public function getOrderProducts($order_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); return $query->rows; } Новый столбец создал вручную в "oc_order_product", через phpMyAdmin
  21. К сожалению не сработал ни один ни другой вариант при этом из массива нормально вытягивает 'order_product_id' из таблицы "oc_order_product" <?php foreach ($products as $product) { ?> <?php echo $product['order_product_id']; ?> <?php } ?> Может в модели запроса какого-то не хватает
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.