Як перекрити статичний метод у Magento2


11

Перехоплювачі плагінів і переопределення з перевагою не працюють на статичні методи.

Потрібно змінити метод 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, який є статичним методом, не може бути змінений перехоплювачами або налаштуваннями.
користувач3339988

Вибачте, я позначив неправильне запитання. Цей має допомогти вам magento.stackexchange.com/questions/134386/…
PY Yick

Той не відповідає на моє запитання.
користувач3339988

Хтось? я застряг у цьому 2-3 дні. Будь-який альтернативний спосіб додати параметр видимості?
користувач3339988

Відповіді:


1

Перевизначення тільки getOptionArray()не вистачає тільки тому , що якщо ви бачите в Magento \ Каталог \ моделі \ продукт \ Видимість на лінії 107, 120 і 134, getOptionArray()викликаються з self.Self завжди викликатиме оригінальний метод , а не новий, тому вам просто потрібно скопіювати і вставити getAllOption(), getAllOptions()і getOptionText()в вашій перевантаженої моделі класу ( Те ж саме , коли ви перекриватися getOptionArray())

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.