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.