Sprawdź, czy produkt z SKU istnieje w Magento 2

9

W Magento 1.x mogłem zrobić

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

Jak mogę to sprawdzić w Magento 2?

bpoiss
źródło

Odpowiedzi:

11
próbować { {
    $ product = $ productRepository-> get ($ sku);= $productRepository->get($sku);
} catch (\ Magento \ Framework \ Exception \ NoSuchEntityException $ e) {} catch (\Magento\Framework\Exception\NoSuchEntityException $e){
    $ produkt = fałsz;= false;
}}
Amol Kumbhar
źródło
Działa to dokładnie tak, jak chciałem.
TS Guhan
10

Spróbuj tego:

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

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

LUB

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

i po sprawdzeniu

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}
Abdul
źródło
2
Myślałem, że nie powinieneś używać obiektu objectManager bezpośrednio
bpoiss
zaktualizowano ans pls sprawdź teraz
Abdul,
Lepsza jest druga wersja bez menedżera obiektów :)
Anna Völkl
1

Zobacz odpowiedź @bpoiss, moja odpowiedź zawiera więcej informacji na temat uzyskiwania produktu za pomocą SKU.

Aby to zrobić, możesz skorzystać z Magento\Catalog\Model\ProductRepositoryklasy.

Najpierw wstrzyknij go do swojego konstruktora:

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

Następnie w swojej funkcji możesz wykonać:

$this->_productRepository->get($sku);
Raphael at Digital Pianism
źródło
1
Nie działało to dla mnie, ponieważ jeśli SKU istnieje, mam instancję interfejsu ProductInterface, a w przeciwnym razie ciąg „Produkt nie istnieje”, który będzie miał wartość true. Musiałbym wykonać dodatkową kontrolę instancji
bpoiss
@ bpoiss tak, właśnie tak moja odpowiedź jest bardziej na temat tego, jak uzyskać produkt z SKU, twoja odpowiedź jest zdecydowanie właściwa;) A tak przy okazji, możesz zaznaczyć „odpowiedz na moje pytanie”, kiedy utworzysz nowe pytanie, więc będziesz miał tylko jeden formularz do wypełnienia;)
Raphael w Digital Pianism
dziękuję za zwrócenie na to uwagi, ale w chwili, gdy napisałem pytanie, nie znałem odpowiedzi ^^
bpoiss
@bpoiss haha ​​ok ^^, ponieważ twoja odpowiedź była szybka, zgadłem, że o tym wiesz. ;)
Raphael w Digital Pianism
0

Właśnie dowiedziałem się, że getIdBySkumetoda nadal istnieje \Magento\Catalog\Model\Product. Wstrzyknij to za pomocą

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

i możesz to sprawdzić za pomocą

$this->productModel->getIdBySku($sku)
bpoiss
źródło
0

Myślę że możesz:

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

Ale to nie jest standardowa funkcja.

użytkownik3006940
źródło