jonny008 Опубликовано 16 февраля, 2022 Жалоба Поделиться Опубликовано 16 февраля, 2022 Здравствуйте уважаемые форумчане) Возникла потребность сделать импорт товаров с выбором бренда при импорте CSV. Все необходимые бренды уже созданы. Добавил в ImportAdmin.php $brands = $this->brands->get_brands(); $this->design->assign('brands', $brands); и в условии if($this->request->method('post')) $brand_id = $this->request->post('brand_id', 'integer'); $this->design->assign('brand_id', $brand_id); Далее в файле import.tpl в тегах form <select name="brand_id" class="form-input"> <option value="0" data-name="" selected>Не указан</option> {foreach $brands as $brand} <option value="{$brand->id}" data-name="{$brand->name|escape}">{$brand->name|escape}</option> {/foreach} </select> В этом же файле ниже, добавил brand_id: function do_import(data, brand_id) { $.ajax({ url: 'ajax/import.php', method: 'post', data: { data: data, brand_id: brand_id, }, Далее в файле import.php (simpla/ajax/import.php) Закомментировал 'brand'=> array('brand', 'бренд'), и if(!empty($item['brand'])) { $item['brand'] = trim($item['brand']); // Найдем его по имени $this->db->query('SELECT id FROM __brands WHERE name=?', $item['brand']); if(!$product['brand_id'] = $this->db->result('id')) // Создадим, если не найден $product['brand_id'] = $this->brands->add_brand(array('name'=>$item['brand'], 'meta_title'=>$item['brand'], 'meta_keywords'=>$item['brand'], 'meta_description'=>$item['brand'])); } и добавил $product['brand_id'] = $this->request->post('brand_id', 'integer'); Бренды не добавляются. Передаётся brand_id = 0. В чём может быть ошибка? Цитата Ссылка на сообщение Поделиться на другие сайты
Drake777 Опубликовано 17 февраля, 2022 Жалоба Поделиться Опубликовано 17 февраля, 2022 (изменено) в import.tpl в js еще надо определение brand_id в ajax вы дописали brand_id: brand_id, а что это такое похоже не определили выше Изменено 17 февраля, 2022 пользователем Drake777 Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 17 февраля, 2022 Автор Жалоба Поделиться Опубликовано 17 февраля, 2022 2 часа назад, Drake777 сказал: в import.tpl в js еще надо определение brand_id в ajax вы дописали brand_id: brand_id, а что это такое похоже не определили выше Прошу прощения, не сначала выложил. Определение есть. {if $filename} {capture name = 'scripts'} {literal} <script> (function(){ 'use strict'; var $progressBar = $('.import-progress-bar'), brand_id = '{/literal}{$brand_id}{literal}', $progressPercent = $('.import-progress-percent'), $result = $('.import-result'), $resultCounts = $('.import-result-counts'), percent = '0%', countAdded = 0, countUpdated = 0; function do_import(data, brand_id) { $.ajax({ url: 'ajax/import.php', method: 'post', data: { data: data, brand_id: brand_id, }, dataType: 'json', success: function (data) { for (var key in data.items) { console.log(data.items[key]) var $item = $('<div>', { class: 'import-result-item ' + data.items[key].status, html: [$('<a>', { class: 'import-result-name', text: data.items[key].product.name, href: 'index.php?module=ProductAdmin&id=' + data.items[key].product.id, target: '_blank' }), Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 17 февраля, 2022 Жалоба Поделиться Опубликовано 17 февраля, 2022 Как минимум ошибка в том, что 14 часов назад, jonny008 сказал: Далее в файле import.php (simpla/ajax/import.php) Закомментировал 'brand'=> array('brand', 'бренд'), Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 17 февраля, 2022 Жалоба Поделиться Опубликовано 17 февраля, 2022 15 часов назад, jonny008 сказал: data: { data: data, brand_id: brand_id, }, data: { data: data, brand_id: $('select[name="brand_id"]').val(), }, Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 17 февраля, 2022 Жалоба Поделиться Опубликовано 17 февраля, 2022 А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно). Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 17 февраля, 2022 Автор Жалоба Поделиться Опубликовано 17 февраля, 2022 36 минут назад, Noxter сказал: data: { data: data, brand_id: $('select[name="brand_id"]').val(), }, Здравствуйте Артём. Спасибо за подсказку, к сожалению результат тот же brand_id = 0. Может я неправильно ловлю в import.php строкой $product['brand_id'] = $this->request->post('brand_id', 'integer'); Мысли уже закончились) Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 17 февраля, 2022 Автор Жалоба Поделиться Опубликовано 17 февраля, 2022 37 минут назад, Noxter сказал: А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно). 30 разных файлов и все без указания "Бренд", в каждом по 10000 строк. Для меня, было бы проще выбрать в выпадающем списке. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 24 февраля, 2022 Жалоба Поделиться Опубликовано 24 февраля, 2022 (изменено) Довожу до сведения форума, товарищ обратился, договоренность об оплате не выполнил. На сообщения не отвечает. Его телеграмм - @promedia_website Изменено 24 февраля, 2022 пользователем ExtraBash Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.