Os interceptadores de plug-in e a substituição pela preferência não funcionam em métodos estáticos.
É necessário substituir o método getOptionArray no Magento \ Catalog \ Model \ Product \ Visibility para retornar uma visibilidade personalizada
/**
* 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')
];
}
Existe alguma outra maneira de conseguir isso?
Respostas:
Substituindo única
getOptionArray()
não é apenas o suficiente, porque se você vê no Magento \ Catalog \ Modelo \ Product \ Visibilidade na linha 107, 120 e 134,getOptionArray()
é chamado comself
.Auto sempre chamar o método original em vez de novo, portanto, você precisa simplesmente de cópia e colegetAllOption()
,getAllOptions()
egetOptionText()
em sua classe de modelo substituída (a mesma em que você substituiugetOptionArray()
)fonte