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.