Cara mengganti metode statis di Magento2

11

Plugin Interceptors dan mengesampingkan dengan preferensi tidak berfungsi pada metode statis.

Perlu mengganti metode getOptionArray di Magento \ Catalog \ Model \ Product \ Visibility untuk mengembalikan visibilitas khusus

/**
     * Retrieve option array
     *
     * @return array
     */
    public static function getOptionArray()
    {
        return [
            self::VISIBILITY_NOT_VISIBLE => __('Not Visible Individually'),
            self::VISIBILITY_IN_CATALOG => __('Catalog'),
            self::VISIBILITY_IN_SEARCH => __('Search'),
            self::VISIBILITY_BOTH => __('Catalog, Search')
        ];
    }

Adakah cara lain untuk mencapai ini?

pengguna3339988
sumber
Tidak. Saya bertanya bagaimana cara menambahkan opsi visibilitas baru. Array getOption menjadi metode statis tidak dapat dimodifikasi dengan interseptor atau preferensi.
user3339988
Maaf, saya menandai pertanyaan yang salah. Yang ini akan membantu Anda magento.stackexchange.com/questions/134386/…
PY Yick
Yang itu tidak menjawab pertanyaan saya.
user3339988
Siapa saja? Saya sudah terjebak dengan ini selama 2-3 hari. Adakah cara alternatif untuk menambahkan opsi visibilitas?
user3339988

Jawaban:

1

Hanya mengganti getOptionArray()tidak cukup hanya karena jika Anda melihat di Magento \ Katalog \ Model \ Produk \ Visibilitas di baris 107, 120 & 134, getOptionArray()dipanggil dengan self.Self akan selalu memanggil metode asli daripada yang baru, maka Anda hanya perlu menyalin dan tempel getAllOption(), getAllOptions()& getOptionText()di Kelas Model yang diganti (Sama dengan tempat Anda mengganti getOptionArray())

Abdul Pathan
sumber