Bagaimana cara menonaktifkan / mengaktifkan produk secara programatis di Magento2?


9

Saya mencoba meniru perilaku yang sama seperti ketika Anda menggunakan panel admin untuk menonaktifkan produk. Saya mencoba melakukan sesuatu seperti ini:

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

Tapi saya masih melihatnya diaktifkan di panel admin.

Terima kasih.


Kode ini seharusnya berfungsi. Apa statusnya ketika Anda melihat di panel admin, detail produk? Pastikan mode reindex "on save" jika Anda ingin segera melihat perubahan
Stijn Duynslaeger - Echron

Jika saya masuk ke katalog produk> itu masih mengatakan diaktifkan. Dan Jika saya mencoba [MENDAPATKAN] / produk / search /? SearchCriteria ... Saya masih melihatnya dan statusnya sama dengan 1.
awavi

Anda yakin kode ini dijalankan? Bisakah Anda men-debug kode? Mungkin mencoba mengatur properti lain seperti deskripsi untuk melihat apakah produk tersebut disimpan. Periksa log kesalahan. Saya pernah tidak dapat menyimpan produk karena bidang yang tidak valid ... (Anda dapat memeriksa dengan mencoba menyimpan perubahan di panel admin)
Stijn Duynslaeger - Echron

Ya saya yakin itu akan dieksekusi. Saya dapat dan telah men-debugnya. Tidak ada log. Dan tidak, itu tidak berhasil.
awavi

Maksud Anda, Anda tidak dapat menyimpan produk di panel admin?
Stijn Duynslaeger - Echron

Jawaban:


11

Masalahnya adalah bahwa $product = $this->productRepository->get($sku);mendapatkan produk untuk toko default. Dan jika Anda ingin menonaktifkannya secara global, Anda harus lulus

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

Tolong jelaskan bagaimana menggunakan kode ini untuk menonaktifkan produk secara global?
Purushotam Sharma

Kode ini tidak!
awavi

terima kasih - itu berhasil untuk saya!
Oktarin

1

Anda dapat mencoba dengan kode di bawah ini,

Anda dapat memeriksa kode file inti, vendor / magento / modul-katalog-sampel-data / 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();
    }
}

Tapi yang ini adalah ketika Anda membuat produk baru. Saya sekarang tahu apa masalahnya. Saya menyimpan produk hanya dalam ruang lingkup toko saat ini. Tetapi secara global masih akan diaktifkan.
awavi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.