首页 > 解决方案 > magento 2如何在产品详细信息选项卡中获取产品对象

问题描述

谁能指导我如何在详细信息选项卡上加载或获取产品对象 https://prnt.sc/t1dpay
我想通过从供应商/magento/module-catalog 加载产品对象来在详细信息页面上显示数据/view/frontend/templates/product/view/details.phtml

提前致谢

标签: phpmagentomagento2

解决方案


在 Magento 中有Magento\Framework\Registry一个包含(除其他外)“当前产品”的类,如果产品详细信息页面将是页面上显示的产品。

Magento\Framework\Registry已弃用,但我还没有找到一个好的选择。因为它在大多数情况下都被弃用了,所以我创建一个只做一件事的类,从注册表中获取所需的值。它是直接使用不推荐使用的类本身或“重写它”之间的中间立场,它封装了不推荐使用的类,并且可以在将来必要时非常容易地换出(整个类或具体的实现get())。

use Magento\Framework\Registry;

class MyCurrentProduct {
    protected $registry;

    public function get(): ProductInterface {
        return $registry->get('current_product');
    }
}

我在示例中遗漏了一些内容,因为我不喜欢发布可复制粘贴的答案。


推荐阅读