Respuestas:
pruebe { $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { $ product = false ; }
Prueba esto:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');
if($product->getIdBySku($sku)) {
echo 'exit';
}
O
protected $product;
public function __construct(
\Magento\Catalog\Model\Product $product
) {
$this->_product = $product;
}
y después del cheque
if($this->_product->getIdBySku($sku)) {
echo 'exit';
}
Vea la respuesta @bpoiss, mi respuesta es más sobre cómo obtener un producto usando el sku.
Para hacerlo, puedes usar la Magento\Catalog\Model\ProductRepositoryclase.
Primero inyecte en su constructor:
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 */
}
Entonces en su función puede hacer:
$this->_productRepository->get($sku);
Acabo de descubrir que el getIdBySkumétodo todavía existe en \Magento\Catalog\Model\Product. Inyectarlo con
public function __construct(
\Magento\Catalog\Model\Product $productModel
) {
$this->productModel = $productModel;
}
y que puedes consultar con
$this->productModel->getIdBySku($sku)
Yo creo que puedes:
$checkProduct = $this->objectManager->create(
'Magento\Catalog\Model\Product'
);
if($checkProduct->getIdBySku()){
echo 'exist';
}
Pero no es la función estándar.