Làm cách nào để tắt / bật sản phẩm theo chương trình trong Magento2?


9

Tôi đang cố gắng mô phỏng hành vi tương tự như khi bạn sử dụng bảng quản trị để vô hiệu hóa sản phẩm. Tôi đang cố gắng làm một cái gì đó như thế này:

$product = $this->productRepository->get($sku);
$product->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
$this->productRepository->save($product);

Nhưng tôi vẫn thấy nó được kích hoạt trong bảng quản trị.

Cảm ơn.


Mã này nên hoạt động. Trạng thái khi bạn nhìn vào bảng quản trị, chi tiết sản phẩm là gì? Đảm bảo chế độ reindex là "đang lưu" nếu bạn muốn thấy các thay đổi ngay lập tức
Stijn Duynslaeger - Đồng bộ hóa

Nếu tôi đi đến sản phẩm> danh mục thì nó vẫn báo là đã bật. Và nếu tôi cố gắng [NHẬN] / sản phẩm / tìm kiếm /? SearchCriteria ... tôi vẫn thấy nó và trạng thái bằng 1.
awavi

Bạn có chắc chắn mã này được thực thi? Bạn có thể gỡ lỗi mã? Có thể thử đặt một thuộc tính khác như mô tả để xem sản phẩm có được lưu hay không. Kiểm tra nhật ký lỗi. Tôi đã từng không thể lưu sản phẩm vì trường không hợp lệ ... (bạn có thể kiểm tra xem bằng cách lưu thay đổi trong bảng quản trị)
Stijn Duynslaeger - Eync

Vâng, tôi chắc chắn rằng nó sẽ được thực hiện. Tôi có thể và đã gỡ lỗi nó. Không có nhật ký. Và không, nó không hoạt động.
awavi

Bạn có nghĩa là bạn không thể lưu sản phẩm trong bảng quản trị?
Stijn Duynslaeger - Đồng bộ hóa

Câu trả lời:


11

Vấn đề là có $product = $this->productRepository->get($sku);được một sản phẩm cho cửa hàng mặc định. Và nếu bạn muốn vô hiệu hóa nó trên toàn cầu, bạn cần phải vượt qua

$this->productRepository->get(
    $sku,
    true/* edit mode */,
    0/* global store*/,
    true/* force reload*/
);

Hãy giải thích cách sử dụng mã này để vô hiệu hóa sản phẩm trên toàn cầu?
Purushotam Sharma

Mã này nào!
awavi

cảm ơn bạn - nó đã làm việc cho tôi
Oktarin

1

Bạn có thể thử với mã dưới đây,

Bạn có thể kiểm tra mã tệp lõi, nhà cung cấp / magento / mô-đun-catalog-mẫu-dữ liệu / Model / Product.php

class Product
{
    public function __construct(
        \Magento\Catalog\Model\ProductFactory $productFactory
    ) {
        $this->productFactory = $productFactory;
    }
    public function saveproduct()
    {

        $product = $this->productFactory->create();
        $product->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
        $product->save();
    }
}

Nhưng đây là khi bạn đang tạo ra một sản phẩm mới. Bây giờ tôi biết vấn đề là gì. Tôi đang lưu sản phẩm chỉ trong phạm vi của cửa hàng hiện tại. Nhưng trên toàn cầu nó vẫn sẽ được kích hoạt.
awavi
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.