我正在尝试创建一个模块来自动从外部数据库导入产品到Opencart的数据库。
我遵循了所有可用的文档来构建模块。创建控制器,视图,语言文件。我没有创建模型文件,因为我使用的是opencarts模型。
在我的控制器opencart/admin/controller/extension/module/auto_product_import.php
我正在开始连接我的外部数据库。
然后执行查询来检索所有产品及其数据(价格、描述等)。
之后,我创建了一个数组来满足open - art模型的需要,并用我新检索到的数据填充它:
for ($i=0; $i < 1; $i++) {
$products_data_array[] = array(
'product_description' => array(
'name' => strval($results['product_CODE'][$i]),
'meta_description' => strval($results['DESCR'][$i]),
'meta_keyword' => strval($results['product_CODE'][$i]),
'description' => strval($results['DESCR'][$i]),
'tag' => strval($results['CODCODE'][$i]),
),
'custom_id' => $results['custom_ID'][$i],
'model' => $results['product_CODE'][$i],
'sku' => '',
'upc' => '',
'ean' => '',
'jan' => '',
'isbn' => '',
'mpn' => '',
'location' => '',
'price' => $results['PRICE'][$i],
'tax_class_id' => '',
'quantity' => '',
'minimum' => '',
'subtract' => '',
'stock_status_id' => '5',
'shipping' => '',
'keyword' => '',
'image' => '',
'date_available' => '',
'length' => '',
'width' => '',
'height' => '',
'length_class_id' => '',
'weight' => strval($results['weight'][$i]),
'weight_class_id' => '',
'status' => '1',
'sort_order' => '',
'manufacturer' => $brand,
'manufacturer_id' => '',
'category' => strval($results['category'][$i]),
'filter' => '',
'product_store' => array(
'0' => 0
),
'download' => '',
'related' => '',
'product_attribute' => array(
'0' => array(
'name' => '',
'attribute_id' => '',
'product_attribute_description' => array(
'1' => array(
'text' => "first language content"
)
)
)
),
'option' => '',
'points' => '',
'product_reward' => array(
'1' => array(
'points' => ''
)
),
'product_layout' => array(
'0' => array(
'layout_id' => ''
)
)
);
注意:使用for循环进行测试
注意: openart数组的一些项是空的,因为我没有数据可以为它们导入
然后我加载openart的模型来添加产品:
$this->load->model('catalog/product');
然后我导入产品使用:
$this->model_catalog_product->addProduct($products_data_array);
当我加载模块时,我得到以下消息:
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'model'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'custom_id'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'sku'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'upc'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'upc'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'upc'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'ean'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'isbn'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'mpn'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'location'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'location'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'location'
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'location'
警告:非法字符串offset 'quantity'在opencart/admin/model/catalog/product.php第4行
警告:非法字符串offset 'minimum'在opencart/admin/model/catalog/product.php第4行
警告:非法字符串offset 'subtract'在opencart/admin/model/catalog/product.php第4行
警告:非法字符串offset 'stock_status_id'在opencart/admin/model/catalog/product.php第4行
警告:非法字符串offset 'stock_status_id'在opencart/admin/model/catalog/product.php
警告:非法字符串offset 'stock_status_id'在opencart/admin/model/catalog/product.php
警告:非法字符串偏移'date_available'在opencart/admin/model/catalog/product.php在第4行
警告:非法字符串偏移'manufacturer_id'在opencart/admin/model/catalog/product.php在第4行
警告:非法字符串偏移'shipping'在opencart/admin/model/catalog/product.php在第4行
警告:非法字符串偏移'price'在opencart/admin/model/catalog/product.php在第4行
警告:非法字符串偏移'price'在opencart/admin/model/catalog/product.php在第4行
警告:
警告:在opencart/admin/model/catalog/product.php中在第4行出现的非法字符串偏移'points'
警告:在opencart/admin/model/catalog/product.php中在第4行出现的非法字符串偏移'weight_class_id'
警告:在opencart/admin/model/catalog/product.php中在第4行出现的非法字符串偏移'length'
警告:在opencart/admin/model/catalog/product.php中出现的非法字符串偏移'length'
警告:在opencart/admin/model/catalog/product.php中出现的非法字符串偏移'points'
警告:在opencart/admin/model/catalog/product.php的第4行,非法字符串偏移'width'
警告:在opencart/admin/model/catalog/product.php的第4行,非法字符串偏移'length_class_id'
警告:在opencart/admin/model/catalog/product.php的第4行,非法字符串偏移'status'
警告:在opencart/admin/model/catalog/product.php,非法字符串偏移'status'
警告:
警告:第4行opencart/admin/model/catalog/product.php中的非法字符串偏移'tax_class_id'
警告:第12行opencart/admin/model/catalog/product.php中的非法字符串偏移'sort_order'
我试图修改product.php
模型,但我没有运气。(
它还插入了一个包含新产品的行,但所有字段都是空的,它只得到和id。
为了以防万一,我甚至检查了我的新数组。但是我没有发现任何问题。有谁知道什么是错的或我错过了什么?
看起来addProduct()每次只添加一个产品,而您发送的是整个产品数组。
试试这个:
foreach ($products_data_array as $product) {
$this->model_catalog_product->addProduct($product);
}
这个问题在我重组数组后得到了解决。子数组应该有一个子数组,其中language_id作为键。
函数数组的结构应该如下:
$products_data_array[] = array(
'product_description' => array(
'0' => array(
'name' => $name,
'meta_description' => $meta_description,
'meta_title' => $meta_title,
'meta_keyword' => $meta_keyword,
'description' => $description,
'tag' => $tag,
)
),
'mciid' => $mciid,
'model' => $model,
'sku' => '',
'upc' => '',
'ean' => '',
'jan' => '',
'isbn' => '',
'mpn' => '',
'location' => '',
'price' => $price,
'tax_class_id' => '',
'quantity' => '',
'minimum' => '',
'subtract' => '',
'stock_status_id' => '5',
'shipping' => '',
'keyword' => '',
'image' => '',
'date_available' => '',
'length' => '',
'width' => '',
'height' => '',
'length_class_id' => '',
'weight' => $weight,
'weight_class_id' => '',
'status' => '1',
'sort_order' => '',
'manufacturer' => $brand,
'manufacturer_id' => '111',
'category' => $category,
'filter' => '',
'product_store' => array(
'0' => 0
),
'download' => '',
'related' => '',
'product_attribute' => array(
'0' => array(
'name' => '',
'attribute_id' => '',
'product_attribute_description' => array(
'1' => array(
'text' => "first language content"
)
)
)
),
'option' => '',
'points' => '',
'product_reward' => array(
'1' => array(
'points' => ''
)
),
'product_layout' => array(
'0' => array(
'layout_id' => '2'
)
)
);
注意:这个数组在Opencart的3.0.3.8版本上是可用的。