Quero usar funções como getName()
, getPrice()
etc. do produto para recuperar informações do produto no Magento 2.
Alguém pode me mostrar como posso conseguir isso?
Quero usar funções como getName()
, getPrice()
etc. do produto para recuperar informações do produto no Magento 2.
Alguém pode me mostrar como posso conseguir isso?
Respostas:
No Magento 2 propôs usar a camada de serviço para isso. Tente usar o \Magento\Catalog\Model\ProductRepository::getById
método para obter o produto por ID
O Magento 2 recomenda usar Factories
para carregar todos os modelos. Aqui está como você deve fazê-lo:
Acima da sua turma, adicione esta linha:
use Magento\Catalog\Model\ProductFactory;
Agora crie a propriedade da classe:
protected $productFactory;
No seu construtor, adicione dependência:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Agora carregue o produto como abaixo:
$_product = $this->productFactory->create()->load(<product_id>);
Além de outras respostas, sugiro usar os seguintes métodos de contratos de serviço:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: para carregar um produto por ID\Magento\Catalog\Api\ProductRepositoryInterface::get
: para carregar um produto por skuA maneira mais Magento de conseguir isso, embora seja difícil dizer, já que a maioria dos lugares no código principal o faz de maneira diferente é usar o repositório do produto.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Eu tenho buscar detalhes do produto usando a função na página de visualização do produto como abaixo.
Aqui Sm / Sawyer é o meu tema.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();