Quiero usar funciones como getName()
, getPrice()
etc. del producto para recuperar información del producto en Magento 2.
¿Alguien puede mostrarme cómo puedo lograr eso?
Quiero usar funciones como getName()
, getPrice()
etc. del producto para recuperar información del producto en Magento 2.
¿Alguien puede mostrarme cómo puedo lograr eso?
Respuestas:
En Magento 2 propuso utilizar la capa de servicio para esto. Intente usar el \Magento\Catalog\Model\ProductRepository::getById
método para obtener el producto por ID
Magento 2 recomienda usar Factories
para cargar todos los modelos. Así es como debes hacerlo:
Por encima de su clase agregue esta línea:
use Magento\Catalog\Model\ProductFactory;
Ahora cree la propiedad de clase:
protected $productFactory;
En su constructor, agregue dependencia:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Ahora cargue el producto de la siguiente manera:
$_product = $this->productFactory->create()->load(<product_id>);
Además de otras respuestas, sugiero utilizar los siguientes métodos de contratos de servicio:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: cargar un producto por id\Magento\Catalog\Api\ProductRepositoryInterface::get
: cargar un producto por skuLa forma más efectiva de Magento de lograr esto, aunque es difícil de determinar, ya que la mayoría de los lugares en el código central lo hacen de manera diferente es usar el repositorio del producto.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
He obtenido detalles del producto usando la función en la página de vista del producto como se muestra a continuación.
Aquí Sm / Sawyer es mi tema.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();