Ich möchte Funktionen wie getName()
, getPrice()
usw. des Produkts verwenden, um Produktinformationen in Magento 2 abzurufen.
Kann mir jemand zeigen, wie ich das erreichen kann?
Ich möchte Funktionen wie getName()
, getPrice()
usw. des Produkts verwenden, um Produktinformationen in Magento 2 abzurufen.
Kann mir jemand zeigen, wie ich das erreichen kann?
Antworten:
In Magento 2 wurde vorgeschlagen, hierfür Service Layer zu verwenden. Verwenden Sie die \Magento\Catalog\Model\ProductRepository::getById
Methode, um das Produkt anhand der ID abzurufen
Magento 2 empfiehlt, Factories
zum Laden aller Modelle zu verwenden. So solltest du es machen:
Fügen Sie über Ihrer Klasse die folgende Zeile ein:
use Magento\Catalog\Model\ProductFactory;
Erstellen Sie nun eine Klasseneigenschaft:
protected $productFactory;
Fügen Sie in Ihrem Konstruktor Abhängigkeit hinzu:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Laden Sie nun das Produkt wie folgt:
$_product = $this->productFactory->create()->load(<product_id>);
Zusätzlich zu anderen Antworten empfehle ich die Verwendung der folgenden Methoden für Serviceverträge:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: um ein Produkt nach ID zu laden\Magento\Catalog\Api\ProductRepositoryInterface::get
: um ein Produkt von SKU zu ladenDer einfachere Weg, dies mit Magento zu erreichen, obwohl es schwer zu sagen ist, da die meisten Stellen im Kerncode anders vorgehen, ist die Verwendung des Produkt-Repositorys.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Ich habe Produktdetails mit der Funktion auf der Produktansichtsseite wie unten abgerufen.
Hier ist Sm / Sawyer mein Thema.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();