Wtyczki przechwytujące i zastępowanie z preferencjami nie działa w przypadku metod statycznych.
Konieczne jest zastąpienie metody getOptionArray w Magento \ Catalog \ Model \ Product \ Visibility, aby zwrócić niestandardową widoczność
/**
* 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')
];
}
W inny sposób można to osiągnąć?
Odpowiedzi:
Przesłanianie
getOptionArray()
nie jest wystarczające, ponieważ jeśli widzisz w Magento \ Katalog \ Model \ Produkt \ Widoczność w wierszach 107, 120 i 134,getOptionArray()
jest wywoływany za pomocą.self
Sam zawsze będzie wywoływał metodę oryginalną, a nie nową, dlatego po prostu musisz skopiować i wklejgetAllOption()
,getAllOptions()
igetOptionText()
w zastąpionej modelu klasy (ten sam, w którym zostały nadpisanegetOptionArray()
)źródło