Jawaban:
coba { $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { $ product = false ; }
Coba ini:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');
if($product->getIdBySku($sku)) {
echo 'exit';
}
ATAU
protected $product;
public function __construct(
\Magento\Catalog\Model\Product $product
) {
$this->_product = $product;
}
dan setelah cek
if($this->_product->getIdBySku($sku)) {
echo 'exit';
}
Lihat jawaban @bpoiss, jawaban saya lebih lanjut tentang cara mendapatkan produk menggunakan sku.
Untuk melakukannya, Anda dapat menggunakan Magento\Catalog\Model\ProductRepository
kelas.
Suntikkan terlebih dahulu ke konstruktor Anda:
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 */
}
Maka dalam fungsi Anda yang dapat Anda lakukan:
$this->_productRepository->get($sku);
Baru tahu bahwa getIdBySku
metode ini masih ada di \Magento\Catalog\Model\Product
. Suntikkan dengan
public function __construct(
\Magento\Catalog\Model\Product $productModel
) {
$this->productModel = $productModel;
}
dan daripada yang bisa Anda periksa
$this->productModel->getIdBySku($sku)
Saya pikir kamu bisa:
$checkProduct = $this->objectManager->create(
'Magento\Catalog\Model\Product'
);
if($checkProduct->getIdBySku()){
echo 'exist';
}
Tetapi ini bukan fungsi standar.