在我的模块中,客户可以将商品添加到商店,它将通过单独的数据库传递。 当管理员检查产品并验证产品时,我将信息更改为prestashop产品。
所以我有这段代码:
$object = new Product();
$object->price = 32;
$object->id_tax_rules_group = 0;
$object->name = array((int)Configuration::get('PS_LANG_DEFAULT') => $creation['title']);
$object->id_manufacturer = 0;
$object->id_supplier = 0;
$object->quantity = 1;
$object->minimal_quantity = 1;
$object->additional_shipping_cost = 0;
$object->wholesale_price = 0;
$object->ecotax = 0;
$object->out_of_stock = 0;
$object->available_for_order = 1;
$object->show_price = 1;
$object->on_sale = 1;
$object->online_only = 1;
$object->meta_keywords = $creation['title'];
$object->active = 1;
$object->description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $creation['description']);
$object->link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $creation['title']);
$object->id_category = 2;
$object->id_category_default = 2;
$object->addToCategories(array(2,13));
//SAVE
$object->save()
产品已保存且信息良好但未与任何类别相关联。 当我去我的页面产品,我可以看到所有产品,我看到我的产品和类别是那里但是当我输入产品的详细信息,我去类别列表没有检查。
我试图在代码中看到更多正在发生的事情,我看到了这一点:
if (!in_array($new_id_categ, $current_categories))
$product_cats[] = array(
'id_category' => (int)$new_id_categ,
'id_product' => (int)$this->id,
'position' => (int)$new_categ_pos[$new_id_categ],
);
经过测试" if"永远是真的,因此产品永远不会被创造出来。 我有检查,这种关联不存在。
我不知道接下来该做什么,或者我是否需要不使用addToCategory,并自己输入数据...
所以请帮助谢谢。
答案 0 :(得分:1)
方法addToCategories()为已创建的产品分配类别。换句话说,您需要在调用addToCategories()之前调用Product类的save()方法;