Les intercepteurs de plug-in et la substitution avec préférence ne fonctionnent pas sur les méthodes statiques.
Besoin de remplacer la méthode getOptionArray dans Magento \ Catalog \ Model \ Product \ Visibility pour renvoyer une visibilité personnalisée
/**
* 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 toute autre manière, cela peut-il être réalisé?
Réponses:
Le remplacement uniquement
getOptionArray()
n'est pas suffisant, car si vous voyez dans Magento \ Catalog \ Model \ Product \ Visibility à la ligne 107, 120 et 134,getOptionArray()
est appelé avecself
.Self appellera toujours la méthode d'origine plutôt que la nouvelle, vous devez donc simplement copier et collezgetAllOption()
,getAllOptions()
etgetOptionText()
dans votre classe de modèle remplacée (identique à celle que vous avez remplacéegetOptionArray()
)la source