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?


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())

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.