如何在Magento2中覆盖静态方法


11

插件拦截器和优先级覆盖不适用于静态方法。

需要重写Magento \ Catalog \ Model \ Product \ Visibility中的getOptionArray方法 以返回自定义可见性

/**
     * 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益

那个人没有回答我的问题。
user3339988 '17

任何人?我已经坚持了2-3天。还有其他添加可见性选项的方法吗?
user3339988 '17

Answers:


1

仅重写getOptionArray()不只是足够的,因为如果你在Magento \目录\型号\产品\在线路107,120和134能见度看到,getOptionArray()被称为与self.Self总是会调用原来的方法,而不是新的,所以你只需要复制并粘贴getAllOption()getAllOptions()getOptionText()在您覆盖的模型类中(与您覆盖的位置相同getOptionArray()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.