我正在为Prestashop创建一个模块,它需要在产品的每次更改时重新计算价格。 这是我的代码:
public function hookActionProductUpdate($params)
{
if ($this->context->controller->controller_type == 'front')
return ;
$id = $params['id_product'];
$po = new Product($id);
$cats = Product::getProductCategories($po->id);
foreach ($cats as $cat)
{
if ($cat == "49")
{
$ok = 1;
break 1;
}
else
$ok = 0;
}
if ($ok == 0)
return 0;
$po->price_tax_exc = $this->CalculatePrice($po);
var_dump($po->price_tax_exc);
$po->save(); // THE PROBLEM IS HERE
}
问题是当我点击保存时,我将永远不会回到管理员的产品列表。 当我用add()替换save()时,这是相同的事情,但它在循环中创建产品。所以save()处于循环中,我不知道为什么......
答案 0 :(得分:1)
您可以通过以下两种方式解决此问题:
1
protected $price_updated = false;
public function hookActionProductUpdate($params)
{
if ($this->price_updated)
return null;
.........
if ($po->save())
$this->price_updated = true;
}
price_tax_exc
的列,我对价格没有多少经验:(也许wholesale_price
?