Magento 2 - Come recuperare le informazioni sul prodotto


18

Voglio usare funzioni come getName(), getPrice()ecc. Del prodotto per recuperare informazioni sul prodotto in Magento 2.

Qualcuno può mostrarmi come posso farlo?


@John, funziona sotto le risposte. Se Sì, accetta, sarà utile per altri utenti. In caso contrario, fammi sapere, in modo che possiamo fornire una soluzione.
Bojjaiah,

Risposte:


22

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


1
Dovresti usare invece \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: getById.
Thiago Lima,

non è consigliabile utilizzare ProductRepository in Magneto 2
Waqar Ali

12

Magento 2 consiglia di utilizzare Factoriesper caricare tutti i modelli. Ecco come dovresti farlo:

  1. Sopra la tua classe aggiungi questa riga:

    use Magento\Catalog\Model\ProductFactory;
  2. Ora crea la proprietà di classe:

    protected $productFactory;
  3. Nel tuo costruttore, aggiungi dipendenza:

    public function __construct(
       ProductFactory $productFactory
    ) {
       $this->productFactory = $productFactory;
    }
  4. Ora carica il prodotto come di seguito:

    $_product = $this->productFactory->create()->load(<product_id>);

non esiste una classe \ Magento \ Catalog \ Model \ ProductFactory in Magento 2.1.7
shahir hajir

2
La maggior parte delle classi di fabbrica non esiste nel modulo. Sono generati in var / generation per istanziare le classi usando il gestore oggetti. Non utilizzare comunque fabbriche per caricare prodotti. Usa \ Magento \ Catalog \ Api \ ProductRepositoryInterface come suggerito da altri. O almeno usa Magento \ Catalog \ Model \ ProductRepository :: getById ($ id)
Frank

L'uso di ProductRepository non crea nuovi oggetti, come ad esempio l'uso di una fabbrica
Raul Sanchez,


6

Il 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);
}

Risposta corretta, migliore e corretta
Matthias Kleine,

c'è un problema di mercato con l'utilizzo di ProductRepository in Magento 2
Waqar Ali

0

per questo è necessario utilizzare di seguito

uso \Magento\Catalog\Model\Resource\Product\CollectionFactory

$prod_id = "Your product id goes here";
$om         =   \Magento\Framework\App\ObjectManager::getInstance();
$pdata =   $om->create('Magento\Catalog\Model\Product')->load($prod_id);

-1

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();

pessima risposta
LucScu l'

Non utile - solo confuso
Matthias Kleine il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.