Vérifier si un produit avec sku existe dans Magento 2

9

Dans Magento 1.x, je pouvais faire

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

Comment puis-je vérifier cela dans Magento 2?

bpoiss
la source

Réponses:

11
essayez { 
    $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ product = false ; } 
   
Amol Kumbhar
la source
Cela fonctionne exactement comme je le voulais.
TS Guhan
10

Essaye ça:

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

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

OU

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

et après vérification

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}
Abdul
la source
2
Je pensais que vous ne devriez pas utiliser directement
objectManager
mise à jour et vérification des pls maintenant
Abdul
La 2ème version sans le gestionnaire d'objets est meilleure :)
Anna Völkl
1

Voir la réponse @bpoiss, ma réponse est plus sur la façon d'obtenir un produit en utilisant le sku.

Pour ce faire, vous pouvez utiliser la Magento\Catalog\Model\ProductRepositoryclasse.

Injectez-le d'abord dans votre constructeur:

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 */
}

Ensuite, dans votre fonction, vous pouvez faire:

$this->_productRepository->get($sku);
Raphael chez Digital Pianism
la source
1
Cela n'a pas fonctionné pour moi car si le sku existe, j'ai obtenu une instance de ProductInterface et sinon la chaîne 'Product n'existe pas' qui s'évalue à true. Je devrais faire une vérification d'instance supplémentaire
bpoiss
@bpoiss ouais c'est vrai ma réponse est plus sur la façon d'obtenir un produit à partir du sku, votre réponse est certainement la bonne;) Btw, vous pouvez cocher la case 'répondre à ma question' lorsque vous créez une nouvelle question afin que vous n'ayez que un formulaire à remplir;)
Raphael au Digital Pianism
merci de l'avoir signalé, mais au moment où j'ai écrit la question je ne connaissais pas la réponse ^^
bpoiss
@bpoiss haha ​​ok ^^ comme votre réponse était rapide, je suppose que vous le saviez. ;)
Raphael au Digital Pianism
0

Je viens de découvrir que la getIdBySkuméthode existe toujours en \Magento\Catalog\Model\Product. Injectez-le avec

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

et que vous pouvez vérifier avec

$this->productModel->getIdBySku($sku)
bpoiss
la source
0

Je pense que vous pouvez:

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

Mais ce n'est pas la fonction standard.

user3006940
la source