jonny008 Posted February 16, 2022 Report Share Posted February 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. В чём может быть ошибка? Quote Link to post Share on other sites
Drake777 Posted February 17, 2022 Report Share Posted February 17, 2022 (edited) в import.tpl в js еще надо определение brand_id в ajax вы дописали brand_id: brand_id, а что это такое похоже не определили выше Edited February 17, 2022 by Drake777 Quote Link to post Share on other sites
jonny008 Posted February 17, 2022 Author Report Share Posted February 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' }), Quote Link to post Share on other sites
phukortsin Posted February 17, 2022 Report Share Posted February 17, 2022 Как минимум ошибка в том, что 14 часов назад, jonny008 сказал: Далее в файле import.php (simpla/ajax/import.php) Закомментировал 'brand'=> array('brand', 'бренд'), Quote Link to post Share on other sites
Noxter Posted February 17, 2022 Report Share Posted February 17, 2022 15 часов назад, jonny008 сказал: data: { data: data, brand_id: brand_id, }, data: { data: data, brand_id: $('select[name="brand_id"]').val(), }, Quote Link to post Share on other sites
Noxter Posted February 17, 2022 Report Share Posted February 17, 2022 А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно). Quote Link to post Share on other sites
jonny008 Posted February 17, 2022 Author Report Share Posted February 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'); Мысли уже закончились) Quote Link to post Share on other sites
jonny008 Posted February 17, 2022 Author Report Share Posted February 17, 2022 37 минут назад, Noxter сказал: А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно). 30 разных файлов и все без указания "Бренд", в каждом по 10000 строк. Для меня, было бы проще выбрать в выпадающем списке. Quote Link to post Share on other sites
ExtraBash Posted February 24, 2022 Report Share Posted February 24, 2022 (edited) Довожу до сведения форума, товарищ обратился, договоренность об оплате не выполнил. На сообщения не отвечает. Его телеграмм - @promedia_website Edited February 24, 2022 by ExtraBash Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.