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::getByIdmétodo para obter o produto por ID
O Magento 2 recomenda usar Factoriespara 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();