Magento – How to replace \Magento\Catalog\Block\Product\Context since it’s deprecated

deprecatedmagento2.2product-list

In a custom module we extend \Magento\Catalog\Block\Product\ListProduct, so we need \Magento\Catalog\Block\Product\Context in our constructor.

But as I can see, it has now been marked as deprecated in MAGETWO-71174.

namespace Magento\Catalog\Block\Product;

/**
 * Constructor modification point for Magento\Catalog\Block\Product\AbstractProduct.
 *
 * All context classes were introduced to allow for backwards compatible constructor modifications
 * of classes that were supposed to be extended by extension developers.
 *
 * Do not call methods of this class directly.
 *
 * As Magento moves from inheritance-based APIs all such classes will be deprecated together with
 * the classes they were introduced for.
 *
 * @deprecated 101.1.0
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
 */

Here is our constructor:

public function __construct(
    \Magento\Catalog\Block\Product\Context $context,
    \Magento\Framework\Data\Helper\PostHelper $postDataHelper,
    \Magento\Catalog\Model\Layer\Resolver $layerResolver,
    CategoryRepositoryInterface $categoryRepository,
    \Magento\Framework\Url\Helper\Data $urlHelper,
    array $data = [],

    PriceCurrencyInterface $priceCurrency,
    ProductRepositoryInterface $productRepository
) {
    parent::__construct(
        $context,
        $postDataHelper,
        $layerResolver,
        $categoryRepository,
        $urlHelper,
        $data
    );

    $this->priceCurrency = $priceCurrency;
    $this->productRepository = $productRepository;
}

How do we replace it and with what?

Best Answer

Try this:

\Magento\Framework\View\Element\Template\Context $context

Related Topic