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?


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())

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.