Плагин Interceptors и переопределение с предпочтением не работают на статических методах.
Нужно переопределить метод getOptionArray в Magento \ Каталог \ Модель \ Продукт \ Видимость, чтобы вернуть пользовательскую видимость
/**
* 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')
];
}
Другим ли способом это может быть достигнуто?
Ответы:
Только переопределения
getOptionArray()
недостаточно, потому что если вы видите в Magento \ Catalog \ Model \ Product \ Visibility в строке 107, 120 и 134,getOptionArray()
вызывается с помощьюself
.Self всегда будет вызывать оригинальный метод, а не новый, поэтому вам просто нужно скопировать и вставьтеgetAllOption()
,getAllOptions()
&getOptionText()
в вашем переопределенном классе модели (то же самое, где вы переопределилиgetOptionArray()
)источник