Los interceptores de complementos y la anulación con preferencia no funcionan en métodos estáticos.
Debe anular el método getOptionArray en Magento \ Catalog \ Model \ Product \ Visibility para devolver una visibilidad 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')
];
}
¿De alguna otra manera esto se puede lograr?
Respuestas:
Anular solo
getOptionArray()
no es suficiente porque si ve en Magento \ Catálogo \ Modelo \ Producto \ Visibilidad en la línea 107, 120 y 134,getOptionArray()
se llama conself
.Self siempre llamará al método original en lugar de al nuevo, por lo tanto, simplemente necesita copiar y peguegetAllOption()
,getAllOptions()
ygetOptionText()
en su Clase de modelo anulada (igual donde ha anuladogetOptionArray()
)fuente