Jak przesłonić metodę statyczną w Magento2


11

Wtyczki przechwytujące i zastępowanie z preferencjami nie działa w przypadku metod statycznych.

Konieczne jest zastąpienie metody getOptionArray w Magento \ Catalog \ Model \ Product \ Visibility, aby zwrócić niestandardową widoczność

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

W inny sposób można to osiągnąć?


Nie. Pytam, jak dodać nową opcję widoczności. Tablica getOption będąca metodą statyczną nie może być modyfikowana za pomocą przechwytywaczy lub preferencji.
— user3339988,

Przepraszam, zaznaczyłem złe pytanie. Ten powinien ci pomóc magento.stackexchange.com/questions/134386/…
— PY Yick

Ten nie odpowiada na moje pytanie.
— user3339988,

Ktoś? utknąłem z tym przez 2-3 dni. Jakiś alternatywny sposób na dodanie opcji widoczności?
— user3339988,

Odpowiedzi:


1

Przesłanianie getOptionArray()nie jest wystarczające, ponieważ jeśli widzisz w Magento \ Katalog \ Model \ Produkt \ Widoczność w wierszach 107, 120 i 134, getOptionArray()jest wywoływany za pomocą. selfSam zawsze będzie wywoływał metodę oryginalną, a nie nową, dlatego po prostu musisz skopiować i wklej getAllOption(), getAllOptions()i getOptionText()w zastąpionej modelu klasy (ten sam, w którym zostały nadpisane getOptionArray())

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.