Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Импорт товаров в каталог через API

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 27.02.17 16:32:16 #1



Регистрация: 24.03.15
Сообщений: 7


Обратиться по имени

Помогите разобраться в чем ошибка.
При добавлении товаров ошибка.

Есть 2 версии сайта, тестовая и основная.
Ранее писал код который добавляет товары через API который на основном сайте работает.
На тесте с ним возникли какие-то проблемы.
Проблемы с добавлением новых.

define('ROOT_DIR', realpath(__DIR__ . '/../../'));
set_include_path(ROOT_DIR);
$ROOT_PATH = ROOT_DIR . '/';
$AMI_ENV_SETTINGS = [
    'mode' => 'fast',
    'disable_cache' => TRUE
];

require_once   'vendor/autoload.php';
require_once __DIR__ . '/TestImport.php';
try {
    $obj = new TestImport();

    require ROOT_DIR . '/ami_env.php';
    AMI_Event::addHandler('v5_on_item_prepare', 'handleItemPrepare', AMI_Event::MOD_ANY);
    $obj->run();
    $obj->clearCache();
} catch (Exception $ex) {
    echo "root Exception";
    print_r($ex);

}

<?php

use ParserBase\Log;

class TestImport
{
    private $_dom = null;

    /***
     * @var SimpleXMLElement
     */
    private $_s = null;

    /***
     * @var AMI_DB
     */
    private $_oDb = null;

    /***
     * @var string
     */
    public $sm_data = [];

    /***
     * @var AmiCatalog_Items_Table
     */
    private $_oModel = null;

    /***
     * @var null
     */
    protected $rawData = null;

    private $_date = "test11";
    private $_init = false;

    private $_items_local = [];
    private $_items_wait = [];
    private $_items_add = [];

    private $_add_counter = 0;
    private $_update_counter = 0;
    private $_stock_counter = 0;
    private $_hidden_counter = 0;
    private $_wait_counter = 0;
    private $_error_counter = 0;

    private $_add_list = '';
    private $_update_list = '';
    private $_stock_list = '';
    private $_hidden_list = '';
    private $_wait_list = '';
    private $_run_status = false;

    public function __construct()
    {


    }

    function init()
    {
        if ($this->_init == false) {
            $this->_init = true;
            $this->_oDb = AMI::getSingleton('db');
            $this->_oModel = AMI::getResourceModel('eshop_item/table', [['extModeOnConstruct' => 'all']]);
        }
    }


    public function run()
    {
        $this->init();
        echo 222;
        $i = 0;
        $this->addNewItemList("test_ext_id" . time() . ++$i, 26556, "Тест", mt_rand(10, 2000), "", "Тест");
        $this->addNewItemList("test_ext_id" . time() . ++$i, 26556, "Тест", mt_rand(10, 2000), "", "Тест");
        $this->addNewItemList("test_ext_id" . time() . ++$i, 26556, "Тест", mt_rand(10, 2000), "", "Тест");
        $this->addItems();
    }


    private function addNewItemList($id_external, $category_Id, $name, $price, $f_182, $status)
    {
        $this->_items_add[] = [
            'cat_id' => $category_Id,
            'public' => 1,
            'sku' => $id_external,
            'id_external' => $id_external,
            'header' => $name,
            'price' => $price,
            'custom_field_182' => $f_182,
            'custom_field_365' => $status,
            'custom_field_366' => PROVIDER,
            'custom_field_395' => $this->_date,
            'ext_img' => 'impost/test/1.jpg',
            'ext_img_popup' => 'impost/test/2.jpg',
            'ext_img_small' => 'impost/test/3.jpg',
//            'img1' => 'impost/test/4.jpg',
//            'img2' => 'impost/test/5.jpg',
        ];
    }


    private function addItems()
    {
        // сохраняет новые товары
        $s_item_array = sizeof($this->_items_add);
        $a = 0;

        while ($a < $s_item_array) {
            echo 3333;
            $db_item = $this->_oModel->getItem()->setData($this->_items_add[$a]);
            echo 4444;
            $save = true;
            try {
                $db_item->save();
                echo 555;
            } catch (Exception $ex) {
                echo "add Exception\n";
                print_r($ex);
                $save = false;
            }

            if ($save) {
                $this->_add_list .= $this->_items_add[$a]['id_external'] . ' ';
                $this->_add_counter++;
            } else {
                $this->_error_counter++;
            }

            $a++;
        }
    }


    public function clearCache()
    {
        $this->init();
        $this->_oDb->query(DB_Query::getSnippet("TRUNCATE TABLE cms_cache"));
        $this->_oDb->query(DB_Query::getSnippet("TRUNCATE TABLE cms_cache_content"));
        $this->_oDb->query(DB_Query::getSnippet("TRUNCATE TABLE cms_cache_blocks"));

    }


}




Если
$AMI_ENV_SETTINGS = [
    'mode' => 'full'',
    'disable_cache' => TRUE
];

то получаю сообщение ERROR: Wrong request. и Warning в логе об отсутствии файла ( файл одного из модулей сторонний )


Если
$AMI_ENV_SETTINGS = [
    'mode' => 'fast',
    'disable_cache' => TRUE
];

Call to a member function GetModule() on a non-object in _shared/code/hyper_modules/code/AmiCatalog_Items_Table.php on line 569


Через админку товары добавляются.
Думаю проблема в методах подключения к API и загрузкой модулей.

Плюс как загружать изображения в дополнительные поля, через API ?





Создать новую тему

Всего тем: 6587
Всего сообщений: 27632
Всего зарегистрированных пользователей: 47857
Последний зарегистрированный пользователь: ConstantineStone