Chcę użyć funkcji takich jak getName()
, getPrice()
itp. Produktu, aby pobrać informacje o produkcie w Magento 2.
Czy ktoś może mi pokazać, jak to osiągnąć?
Chcę użyć funkcji takich jak getName()
, getPrice()
itp. Produktu, aby pobrać informacje o produkcie w Magento 2.
Czy ktoś może mi pokazać, jak to osiągnąć?
Odpowiedzi:
W Magento 2 zaproponowano użycie do tego warstwy usług. Spróbuj użyć \Magento\Catalog\Model\ProductRepository::getById
metody, aby uzyskać produkt według identyfikatora
Magento 2 zaleca używanie Factories
do ładowania wszystkich modeli. Oto jak powinieneś to zrobić:
Nad klasą dodaj tę linię:
use Magento\Catalog\Model\ProductFactory;
Teraz utwórz właściwość klasy:
protected $productFactory;
W swoim konstruktorze dodaj zależność:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Teraz załaduj produkt jak poniżej:
$_product = $this->productFactory->create()->load(<product_id>);
Oprócz innych odpowiedzi, zdecydowanie zalecam stosowanie następujących metod umów o świadczenie usług:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: aby załadować produkt według identyfikatora\Magento\Catalog\Api\ProductRepositoryInterface::get
: aby załadować produkt przez skuBardziej Magento sposobem na osiągnięcie tego, choć trudno powiedzieć, ponieważ większość miejsc w kodzie podstawowym robi to inaczej, jest korzystanie z repozytorium produktów.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Mam szczegółowe informacje o produkcie za pomocą funkcji na stronie widoku produktu, jak poniżej.
Tutaj Sm / Sawyer to mój motyw.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();