我创建了一个商品类型为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
对象,该对象具有两个属性,calculatedPrice
和basePrice
,但是它们是相同的,好像没有折扣,但是我看到它已应用在购物车中。
答案 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);