Come sovrascrivere un metodo statico in Magento2


11

Intercettori plug-in e sostituzione con preferenza non funziona su metodi statici.

È necessario sostituire il metodo getOptionArray in Magento \ Catalog \ Model \ Product \ Visibility per restituire una visibilità personalizzata

/**
     * 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')
        ];
    }

In qualsiasi altro modo questo può essere raggiunto?


No. Sto chiedendo come aggiungere una nuova opzione di visibilità. L'array getOption essendo un metodo statico non può essere modificato con intercettori o preferenze.
user3339988

Scusa, ho segnato la domanda sbagliata. Questo dovrebbe aiutarti magento.stackexchange.com/questions/134386/…
PY Yick

Quello non risponde alla mia domanda.
user3339988

Chiunque? ne sono rimasto bloccato per 2-3 giorni. Qualche modo alternativo per aggiungere l'opzione di visibilità?
user3339988

Risposte:


1

Sovrascrivere solo getOptionArray()non è sufficiente perché se vedi Magento \ Catalog \ Model \ Product \ Visibility alla riga 107, 120 e 134, getOptionArray()viene chiamato con. selfSe stesso chiamerà sempre il metodo originale piuttosto che uno nuovo, quindi devi semplicemente copiare e incolla getAllOption(), getAllOptions()e getOptionText()nella classe del modello sovrascritta (lo stesso in cui hai scavalcato getOptionArray())

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.