Cómo anular un método estático en Magento2

11

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?

usuario3339988
fuente
No. Estoy preguntando cómo agregar una nueva opción de visibilidad. Como la matriz getOption es un método estático, no se puede modificar con interceptores o preferencias.
user3339988
Lo siento, marqué la pregunta equivocada. Este debería ayudarte magento.stackexchange.com/questions/134386/…
PY Yick
Ese no responde mi pregunta.
user3339988
¿Nadie? He estado atrapado con esto durante 2-3 días. ¿Alguna forma alternativa de agregar la opción de visibilidad?
user3339988

Respuestas:

1

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 con self.Self siempre llamará al método original en lugar de al nuevo, por lo tanto, simplemente necesita copiar y pegue getAllOption(), getAllOptions()y getOptionText()en su Clase de modelo anulada (igual donde ha anulado getOptionArray())

Abdul Pathan
fuente