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::getByIdmetodo per ottenere il prodotto in base all'ID
Magento 2 consiglia di utilizzare Factoriesper 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();