Sku ile ürünün Magento 2'de mevcut olup olmadığını kontrol edin


9

Magento 1.x'te yapabilirdim

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

Bunu Magento 2'de nasıl kontrol edebilirim?

Yanıtlar:


11
Deneyin { {
    $ product = $ productRepository-> get ($ sku);= $productRepository->get($sku);
} catch (\ Magento \ Framework \ Özel Durum \ NoSuchEntityException $ e) {} catch (\Magento\Framework\Exception\NoSuchEntityException $e){
    $ ürün = yanlış;= false;
}}

Bu tam istediğim gibi çalışıyor.
TS Guhan

10

Bunu dene:

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

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

VEYA

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

ve kontrol ettikten sonra

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

2
Ben doğrudan ObjectManager kullanmamalısınız düşünce
bpoiss

güncellenmiş ans pls şimdi kontrol edin
Abdul

Nesne yöneticisi olmadan 2. versiyon daha iyi :)
Anna Völkl

1

@Bpoiss cevabına bakın, cevabım sku kullanarak bir ürünü nasıl alacağınız hakkında daha fazla şey.

Bunu yapmak için Magento\Catalog\Model\ProductRepositorysınıfı kullanabilirsiniz .

İlk önce kurucunuza enjekte edin:

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

Sonra işlevinizde şunları yapabilirsiniz:

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

1
Bu benim için işe yaramadı çünkü sku varsa ProductInterface'in bir örneğini aldım ve aksi takdirde true olarak değerlendirilen 'Ürün yok' dizesi. Ek bir örnek kontrolü yapmak zorunda kalacaktım
bpoiss

@ bpoiss evet bu doğru cevabım sku'dan nasıl ürün alacağınız hakkında daha fazla, cevabınız kesinlikle doğru olanı;) Btw, yeni bir soru oluşturduğunuzda 'soruma cevap ver' i işaretleyebilirsiniz, böylece sadece doldurmak için bir form;)
Raphael, Dijital Piyanizm'de

bunu işaret ettiğiniz için teşekkür ederim, ama şu anda soruyu yazdım cevabı bilmiyordum ^^
bpoiss

@bpoiss haha ​​ok ^^ cevabınız hızlı olduğu için biliyorsunuz. ;)
Raphael,

0

Sadece getIdBySkuyöntemin hala var olduğunu öğrendim \Magento\Catalog\Model\Product. İle enjekte edin

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

ve kontrol edebileceğinden

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

0

Bence yapabilirsin:

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

Ancak standart işlev değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.