Voglio usare funzioni come getName()
, getPrice()
ecc. Del prodotto per recuperare informazioni sul prodotto in Magento 2.
Qualcuno può mostrarmi come posso farlo?
Voglio usare funzioni come getName()
, getPrice()
ecc. Del prodotto per recuperare informazioni sul prodotto in Magento 2.
Qualcuno può mostrarmi come posso farlo?
Risposte:
In Magento 2 ha proposto di utilizzare il livello di servizio per questo. Prova a utilizzare il \Magento\Catalog\Model\ProductRepository::getById
metodo per ottenere il prodotto in base all'ID
Magento 2 consiglia di utilizzare Factories
per caricare tutti i modelli. Ecco come dovresti farlo:
Sopra la tua classe aggiungi questa riga:
use Magento\Catalog\Model\ProductFactory;
Ora crea la proprietà di classe:
protected $productFactory;
Nel tuo costruttore, aggiungi dipendenza:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Ora carica il prodotto come di seguito:
$_product = $this->productFactory->create()->load(<product_id>);
Oltre alle altre risposte, consiglio vivamente di utilizzare i seguenti metodi dei contratti di servizio:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: per caricare un prodotto per ID\Magento\Catalog\Api\ProductRepositoryInterface::get
: per caricare un prodotto con skuIl modo più Magento di raggiungere questo obiettivo, anche se è difficile da dire poiché la maggior parte dei posti nel codice core lo fa diversamente è usare il repository del prodotto.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Ho recuperare i dettagli del prodotto utilizzando la funzione nella pagina di visualizzazione del prodotto come di seguito.
Qui Sm / Sawyer è il mio tema.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();