Controlla se esiste un prodotto con sku in Magento 2


9

In Magento 1.x ho potuto fare

if(Mage::getModel('catalog/product')->getIdBySku($sku))

Come posso verificarlo in Magento 2?

Risposte:


11
provare { {
    $ product = $ productRepository-> get ($ sku);= $ productRepository -> get ( $ sku );
} catch (\ Magento \ Framework \ Exception \ NoSuchEntityException $ e) {} catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) {  
    $ product = false;= falso ; 
}}

Funziona esattamente come volevo.
TS Guhan,

10

Prova questo:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');

if($product->getIdBySku($sku)) {
    echo 'exit';    
}

O

protected $product;
    public function __construct(
            \Magento\Catalog\Model\Product $product
    ) {
        $this->_product = $product;
    }

e dopo il controllo

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}

2
Pensavo che non dovessi usare direttamente l'ObjectManager
bpoiss il

aggiornato ans controllare ora
Abdul

La seconda versione senza il gestore degli oggetti è migliore :)
Anna Völkl,

1

Vedi la risposta di @bpoiss, la mia risposta è più su come ottenere un prodotto usando lo sku.

Per fare ciò puoi usare la Magento\Catalog\Model\ProductRepositoryclasse.

Per prima cosa iniettalo nel tuo costruttore:

protected $_productRepository;

public function __construct(/* your original parameters here */, \Magento\Catalog\Model\ProductRepository $productRepository)
{
    /* your original code here */
    $this->_productRepository = $productRepository;
    /* end of your original code */
}

Quindi nella tua funzione puoi fare:

$this->_productRepository->get($sku);

1
Questo non ha funzionato per me perché se lo sku esiste ho un'istanza di ProductInterface e in caso contrario la stringa "Prodotto non esiste" che viene valutata come vera. Dovrei fare un ulteriore controllo dell'istanza
bpoiss il

@bpoiss sì, esatto, la mia risposta è più su come ottenere un prodotto dallo sku, la tua risposta è sicuramente quella giusta;) A proposito, puoi spuntare la 'rispondi alla mia domanda' quando crei una nuova domanda in modo da avere solo un modulo da compilare;)
Raffaello al Pianismo digitale

grazie per averlo sottolineato, ma nel momento in cui ho scritto la domanda non conoscevo la risposta ^^
bpoiss

@bpoiss haha ​​ok ^^ poiché la tua risposta è stata rapida, immaginai che lo sapessi. ;)
Raffaello al Pianismo digitale,

0

Ho appena scoperto che il getIdBySkumetodo esiste ancora in \Magento\Catalog\Model\Product. Iniettalo con

public function __construct(
    \Magento\Catalog\Model\Product $productModel
) {
    $this->productModel = $productModel;
}

e di quanto puoi verificare

$this->productModel->getIdBySku($sku)

0

Penso che tu possa:

$checkProduct = $this->objectManager->create(
                'Magento\Catalog\Model\Product'
            );
    if($checkProduct->getIdBySku()){
    echo 'exist';
    }

Ma non è la funzione standard.

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.