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ąć?

użytkownik3339988
źródło
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())

Abdul Pathan
źródło