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::getByIdmetody, aby uzyskać produkt według identyfikatora
Magento 2 zaleca używanie Factoriesdo ł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();