我在万磁王内部遇到了一个问题,在类别页面中,产品层价格似乎增加了两次税。我试图调试为什么会发生这种情况,所以浏览了一些文件:
模板显示正在使用renderAmountMinimal()
函数:
$block->renderAmountMinimal();
此函数的块代码:
public function renderAmountMinimal()
{
$id = $this->getPriceId() ? $this->getPriceId() : 'product-minimal-price-' . $this->getSaleableItem()->getId();
$amount = $this->minimalPriceCalculator->getValue($this->getSaleableItem());
print_r($amount);
$amount = $this->minimalPriceCalculator->getAmount($this->getSaleableItem());
if ($amount === null) {
return '';
}
return $this->renderAmount(
$amount,
[
'display_label' => __('As low as'),
'price_id' => $id,
'include_container' => false,
'skip_adjustments' => true
]
);
}
返回对象中的错误值 $amount
。奇怪的是,getValue(( 似乎显示了正确的数量。然后我想看看$this->minimalPriceCalculator
,看看getAmount中发生了什么,但是我不确定如何调试/查看这里发生了什么,因为文件如下所示:
namespace MagentoCatalogPricingPrice;
use MagentoFrameworkPricingSaleableInterface;
use MagentoFrameworkPricingAmountAmountInterface;
interface MinimalPriceCalculatorInterface
{
/**
* Get raw value for "as low as" price
*
* @param SaleableInterface $saleableItem
* @return float|null
*/
public function getValue(SaleableInterface $saleableItem);
/**
* Return structured object with "as low as" value
*
* @param SaleableInterface $saleableItem
* @return AmountInterface|null
*/
public function getAmount(SaleableInterface $saleableItem);
}
我已经检查了SaleableInterface
但它看起来与上面相似,以及之后的每个文件。这个问题似乎很深,只是想知道在哪里看,这样我就能明白为什么会出错?
您可以按照本教程使用 PHPStorm 进行调试(或作为其他 IDE 的指导(。
magento2 中的想法是,此接口用于依赖注入,其中 Magento 框架为您初始化它们。因此,通过如上所述运行调试器,您将被定向到生成的类。
如果您只想查看类,则可以在var/generation/Magento
的根文档中访问服务器上的文件,并在那里搜索该文件。这通常是在 CLI 中运行magento setup:di:compile
时生成的。