So überschreiben Sie eine statische Methode in Magento2


11

Plugin Interceptors und das Überschreiben mit Präferenz funktionieren bei statischen Methoden nicht.

Sie müssen die getOptionArray- Methode in Magento \ Catalog \ Model \ Product \ Visibility überschreiben , um eine benutzerdefinierte Sichtbarkeit zurückzugeben

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

Kann dies auf andere Weise erreicht werden?


Ich frage, wie ich eine neue Sichtbarkeitsoption hinzufügen kann. Das getOption-Array, das eine statische Methode ist, kann nicht mit Interceptors oder Präferenzen geändert werden.
user3339988

Entschuldigung, ich habe die falsche Frage markiert. Dieser sollte Ihnen helfen magento.stackexchange.com/questions/134386/…
PY Yick

Dieser beantwortet meine Frage nicht.
user3339988

Jemand? Ich bin seit 2-3 Tagen damit festgefahren. Gibt es eine alternative Möglichkeit, eine Sichtbarkeitsoption hinzuzufügen?
user3339988

Antworten:


1

Das Überschreiben reicht getOptionArray()nicht aus, denn wenn Sie in den Zeilen 107, 120 und 134 in Magento \ Catalog \ Model \ Product \ Visibility sehen, getOptionArray()wird mit aufgerufen. selfSelbst ruft immer die ursprüngliche Methode auf und nicht die neue. Daher müssen Sie einfach kopieren und fügen Sie ihn getAllOption(), getAllOptions()und getOptionText()in der überschriebenen Model - Klasse (Same , wo Sie außer Kraft gesetzt haben getOptionArray())

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.