Как переопределить статический метод в Magento2


11

Плагин Interceptors и переопределение с предпочтением не работают на статических методах.

Нужно переопределить метод getOptionArray в Magento \ Каталог \ Модель \ Продукт \ Видимость, чтобы вернуть пользовательскую видимость

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

Другим ли способом это может быть достигнуто?


Нет. Я спрашиваю, как добавить новую опцию видимости. Массив getOption, являющийся статическим методом, не может быть изменен с помощью перехватчиков или предпочтений.
user3339988

Извините, я пометил неправильный вопрос. Это должно помочь вам magento.stackexchange.com/questions/134386/…
PY Yick

Тот не отвечает на мой вопрос.
user3339988

Кто-нибудь? Я застрял с этим в течение 2-3 дней. Любой альтернативный способ добавить опцию видимости?
user3339988

Ответы:


1

Только переопределения getOptionArray()недостаточно, потому что если вы видите в Magento \ Catalog \ Model \ Product \ Visibility в строке 107, 120 и 134, getOptionArray()вызывается с помощью self.Self всегда будет вызывать оригинальный метод, а не новый, поэтому вам просто нужно скопировать и вставьте getAllOption(), getAllOptions()& getOptionText()в вашем переопределенном классе модели (то же самое, где вы переопределили getOptionArray())

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.