获取产品变化的估算价格

时间:2019-09-26 19:18:59

标签: drupal drupal-8 drupal-commerce

我创建了一个商品类型为Fixed amount off each matching product的促销,并将其应用于-Specific product。在我的自定义区块中,我获得了产品实体,但是在此看不到任何促销。我怎么能得到它?

UPD:试图通过commerce_order.price_calculator服务来解决此问题。

commercePriceCalc = \Drupal::service('commerce_order.price_calculator');
$context = new Context(\Drupal::entityTypeManager()->getStorage('user')->load(1), 
                     \Drupal::entityTypeManager()->getStorage('commerce_store')->load(1));
$prices = $commercePriceCalc->calculate($slide->field_product->entity, 1, $context);

因此,calculate方法返回给我一个PriceCalculatorResult对象,该对象具有两个属性,calculatedPricebasePrice,但是它们是相同的,好像没有折扣,但是我看到它已应用在购物车中。

1 个答案:

答案 0 :(得分:0)

通过将第四个参数$adjustment_types传递给$commercePriceCalc->calculate方法解决了这个问题。

$adjustment_types = array("promotion" => "promotion");

那么,代码的最终版本

$commercePriceCalc = \Drupal::service('commerce_order.price_calculator');
$context = new Context(\Drupal::currentUser(), 
                     \Drupal::entityTypeManager()->getStorage('commerce_store')->load($store_id));
$prices = $commercePriceCalc->calculate($slide->field_product->entity, 1, $context, $adjustment_types);