Відповіді:
спробуйте { $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { $ product = false ; }
Спробуйте це:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');
if($product->getIdBySku($sku)) {
echo 'exit';
}
АБО
protected $product;
public function __construct(
\Magento\Catalog\Model\Product $product
) {
$this->_product = $product;
}
і після перевірки
if($this->_product->getIdBySku($sku)) {
echo 'exit';
}
Дивіться відповідь @bpoiss, моя відповідь детальніше про те, як отримати продукт за допомогою sku.
Для цього ви можете використовувати Magento\Catalog\Model\ProductRepositoryклас.
Спочатку введіть його у свій конструктор:
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 */
}
Тоді у своїй функції ви можете:
$this->_productRepository->get($sku);
Щойно з’ясували, що getIdBySkuметод все ще існує в \Magento\Catalog\Model\Product. Введіть його за допомогою
public function __construct(
\Magento\Catalog\Model\Product $productModel
) {
$this->productModel = $productModel;
}
і чим ви можете перевірити
$this->productModel->getIdBySku($sku)
Я думаю, що ти можеш:
$checkProduct = $this->objectManager->create(
'Magento\Catalog\Model\Product'
);
if($checkProduct->getIdBySku()){
echo 'exist';
}
Але це не стандартна функція.