2014-11-06 81 views
1

在我的模块中,客户可以将产品添加到商店,它将通过单独的数据库传递。 当管理员检查产品并验证产品时,我将信息更改为prestashop产品。PRESTASHOP 1.6以编程方式将产品类别添加到产品

所以我有这样的代码:

$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() 

产品被保存,具有良好的信息,但它没有与任何一个类别。 当我去我的页面产品,我可以看到所有的产品,我看到我的产品和类别在那里,但是当我输入产品的细节,我去类别列表没有什么是检查。

我想看到更多的是什么happenning的代码,我看到这个:

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], 
); 

和测试后的“如果”始终是真实的,因此该产品是永远不会产生关联。 我有检查,此关联不存在。

我不知道下一步该怎么做,或者也许我需要不使用addToCategory,也许将数据输入自己...

所以请帮助表示感谢。

回答

1

方法addToCategories()将类别分配给已创建的产品。换句话说,您需要在调用addToCategories()之前调用Product类的save()方法;

+0

我已经尝试过,并且表明那一个,但我再次尝试,你是对的,不知道我第一次错过了什么,但你只是救了我:)非常感谢 – 2014-11-06 13:19:12

相关问题