Kiểm tra xem sản phẩm có sku có tồn tại trong Magento 2 không


9

Trong Magento 1.x tôi có thể làm

if(Mage::getModel('catalog/product')->getIdBySku($sku))

Làm thế nào tôi có thể kiểm tra điều này trong Magento 2?

Câu trả lời:


11
thử { 
    $ sản phẩm = $ sản phẩm Lưu trữ -> get ( $ sku ); } Catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ sản phẩm = false ; } 
   

Điều này hoạt động chính xác như tôi muốn.
TS Guhan

10

Thử đi:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');

if($product->getIdBySku($sku)) {
    echo 'exit';    
}

HOẶC LÀ

protected $product;
    public function __construct(
            \Magento\Catalog\Model\Product $product
    ) {
        $this->_product = $product;
    }

và sau khi kiểm tra

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}

2
Tôi nghĩ rằng bạn không nên sử dụng trực tiếp trình quản lý đối tượng
bpoiss 18/03/2016

cập nhật ans vui lòng kiểm tra ngay bây giờ
Abdul

Phiên bản thứ 2 mà không có trình quản lý đối tượng thì tốt hơn :)
Anna Völkl

1

Xem câu trả lời @bpoiss, câu trả lời của tôi là về cách lấy sản phẩm bằng sku.

Để làm như vậy bạn có thể sử dụng Magento\Catalog\Model\ProductRepositorylớp.

Đầu tiên tiêm nó vào constructor của bạn:

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 */
}

Sau đó, trong chức năng của bạn, bạn có thể làm:

$this->_productRepository->get($sku);

1
Điều này không phù hợp với tôi vì nếu sku tồn tại, tôi có một phiên bản của ProductInterface và nếu không thì chuỗi 'Sản phẩm không tồn tại' sẽ đánh giá là đúng. Tôi sẽ phải làm một kiểm tra ví dụ bổ sung
bpoiss 18/03/2016

@bpoiss yeah đúng câu trả lời của tôi là về cách lấy sản phẩm từ sku, câu trả lời của bạn chắc chắn là đúng;) Btw, bạn có thể đánh dấu vào 'trả lời câu hỏi của tôi' khi bạn tạo câu hỏi mới để bạn chỉ có một hình thức để điền vào;)
Raphael tại Digital Pianism 18/03/2016

cảm ơn bạn đã chỉ ra điều này, nhưng trong khoảnh khắc tôi viết câu hỏi tôi không biết câu trả lời ^^
bpoiss 18/03/2016

@bpoiss haha ​​ok ^^ vì câu trả lời của bạn rất nhanh Tôi đoán bạn biết điều đó. ;)
Raphael tại Digital Pianism 18/03/2016

0

Chỉ cần phát hiện ra rằng getIdBySkuphương pháp vẫn tồn tại \Magento\Catalog\Model\Product. Tiêm nó với

public function __construct(
    \Magento\Catalog\Model\Product $productModel
) {
    $this->productModel = $productModel;
}

và hơn bạn có thể kiểm tra với

$this->productModel->getIdBySku($sku)

0

Tôi nghĩ bạn có thể:

$checkProduct = $this->objectManager->create(
                'Magento\Catalog\Model\Product'
            );
    if($checkProduct->getIdBySku()){
    echo 'exist';
    }

Nhưng nó không phải là chức năng tiêu chuẩn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.