Magento2 में एक स्थिर विधि को कैसे ओवरराइड करना है


11

प्लगइन इंटरसेप्टर और अधिमानता के साथ ओवरराइडिंग स्थैतिक तरीकों पर काम नहीं करता है।

कस्टम दृश्यता वापस करने के लिए Magento \ कैटालॉग \ मॉडल \ उत्पाद \ दृश्यता में 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 Yick

वह मेरे सवाल का जवाब नहीं देता है।
user3339988

किसी को? मैं 2-3 दिनों के लिए इस के साथ अटक गया है। दृश्यता विकल्प जोड़ने का कोई वैकल्पिक तरीका?
user3339988

जवाबों:


1

केवल ओवरराइड करना ही getOptionArray()पर्याप्त नहीं है क्योंकि अगर आप लाइन 107, 120 & 134 में Magento के \ "कैटलॉग / मॉडल \ Product \ Visibility में देखते हैं, तो getOptionArray()इसे कहा जाता है। selfहमेशा नए के बजाय मूल विधि को कॉल करेगा, इसलिए आपको बस कॉपी करने की आवश्यकता है। और पेस्ट करें getAllOption(), getAllOptions()और getOptionText()आपके ओवरराइड किए गए मॉडल क्लास में (वही जहां आपने ओवरराइड किया है getOptionArray())

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.