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?

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

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';    
}

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

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)

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.