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?

user3339988
quelle
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())

Abdul Pathan
quelle