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?
Antworten:
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.self
Selbst ruft immer die ursprüngliche Methode auf und nicht die neue. Daher müssen Sie einfach kopieren und fügen Sie ihngetAllOption()
,getAllOptions()
undgetOptionText()
in der überschriebenen Model - Klasse (Same , wo Sie außer Kraft gesetzt habengetOptionArray()
)quelle