Як отримати продукт за SKU в Magento 2?

Як розробник Magento 2 ви знаєте, що без кодування не можливо обійтися для успішної роботи магазину. Є багато завдань, які вам потрібно виконати програмно, особливо коли йдеться про отримання певної інформації, як-от даних користувача за ID або значення налаштування (config value).

Одним із них є також отримання продукту за SKU в Magento 2. І в цій статті ви дізнаєтеся більше про два можливих шляхи виконання цього завдання. 

Отримайте продукт за SKU через dependency injection

Dependency injection — це одне із найпоширеніших рішень коли йдеться про отримання продукту за SKU в Magento. Цей спосіб досить простий, проте не менш ефективний.

Отож, щоб застосувати метод dependency injection, підіть у phtml block file і створіть функцію a _construct:

<?php

namespace Vendor\ModuleName;
class ClassName 
{
    public $productRepository;
    public function __construct(
        \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
    ) {
        $this->productRepository = $productRepository;
    }
    
    public function getProductBySky($sku)
    {
        return $this->productRepository->get($sku);
    }
}

Тепер ви можете отримати продукт за SKU у phtml файлі:

<?php $product = $block->getProductBySky($productSku); ?>

Отримайте продукт за SKU через object manager

Object manager — це ще один варіант, який ви можете розглянути. Використати його можна наступним чином:

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get(Magento\Framework\App\State::class);
$state->setAreaCode('adminhtml');
$productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
$productSku = '24-MB05';
$product = $productRepository->get($productSku);

Примітка: ми наполегливо рекомендуємо уникати прямого використання методу object manager, оскільки він приховує справжні залежності класу.

Обирайте метод, якому ви надаєте перевагу, і отримуйте продукт за SKU без зайвих зусиль.

Звичайно, є чимало інших прикладів, коли потрібно застосовувати кодування. Кожна ситуація вимагає іншого набору команд. Запам’ятати їх усіх звісно ж складно. Тому вам потрібно мати під рукою список корисних команд Magento 2.