有一种方法可以验证产品是否存在,或者产品ID是否由产品ID
创建例如
$_prodId = $this->getProduct()->getId();
if (function_exists($_prodId)){
由于
答案 0 :(得分:4)
发布的其他答案对资源非常强硬,更好的方法是对数据库进行简单查询,你可以用
来做到这一点$sku = Mage::getResourceSingleton('catalog/product')->getProductsSku(array($_prodId));
if(!empty($sku)){
//do your thang
}
这个函数用于在你拥有ID时获取sku,但是我们可以在这里使用它,如果产品不存在,它将返回一个空数组:
array(0) {
}
如果它退出,它将返回一个带有id和sku的数组
array(1) {
[0]=>
array(2) {
["entity_id"]=>
string(6) "185566"
["sku"]=>
string(9) "ID-136308"
}
}
我们甚至可以同时使用它来制作多种产品。
如果我们看一下核心方法的定义
public function getProductsSku(array $productIds)
{
$select = $this->_getReadAdapter()->select()
->from($this->getTable('catalog/product'), array('entity_id', 'sku'))
->where('entity_id IN (?)', $productIds);
return $this->_getReadAdapter()->fetchAll($select);
}
非常简单,比装载产品型号轻得多;
答案 1 :(得分:2)
您可以使用此代码检查是否存在产品Sku。
将此类包含在您的构造函数中。
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder;
\Magento\Catalog\Model\ProductRepository $_productRepository
在需要条件的地方添加以下逻辑。
$productSku = "*Your_Product_Sku*";
$searchCriteria = $this->searchCriteriaBuilder->addFilter("sku", $productSku,'eq')->create();
$products = $this->_productRepository->getList($searchCriteria);
$Items = $products->getItems();
if (count($Items) == 0) {
//your message here.
}
答案 2 :(得分:1)
您可以按照以下方式进行验证。
$_prodId = $this->getProduct()->getId();
$_product = Mage::getModel('catalog/product')->load($_prodId);
if($_product)
{
//product exists
}
else
{
//product doesn't exist
}