Jump to content

PHP Warning: Invalid argument supplied for foreach() in /home/u931065366/domains/example.com/public_html/src/Adapter/Presenter/Product/ProductLazyArray.php on line 636


Recommended Posts

Aquí tienes una lista de información que puede ser útil:
Tipo de instalación (nueva/actualización):
Versión PrestaShop:
Tema (predeterminado/personalizado):
Código (original/modificado):
Alojamiento:
Versión PHP:
Versión MySQL:
Navegador(es) afectado(s):
 

Link to comment
Share on other sites

Busca ese archivo y linea donde te marca el error y donde dice:

foreach ($product->getAttributesResume($this->language->getId()) as $combination)

cámbialo por:

            if (!$combinations_list = $product->getAttributesResume($this->language->getId())) {
                return false;
            }

            foreach ($combinations_list as $combination) {

Suerte.

Link to comment
Share on other sites

hace 4 horas, ExpertoPrestaShop dijo:

Busca ese archivo y linea donde te marca el error y donde dice:

foreach ($product->getAttributesResume($this->language->getId()) as $combination)

cámbialo por:

            if (!$combinations_list = $product->getAttributesResume($this->language->getId())) {
                return false;
            }

            foreach ($combinations_list as $combination) {

Suerte.

hola, gracias por el consejo, 

la línea 636 empieza como indicas con "foreach" y el código total con el cierre es como el siguiente: 

            foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }
            }
        } elseif ($product['quantity'] > 0) {
            // Displayed only if the product stock is <= 0
            return false;
        }

        return true;
    }
He probado poner el código que me indicas sólo sobreescribiendo "foreach ($product->getAttributesResume($this->language->getId()) as $combination)",

Ha dado error, 

Luego he probado sobreescribiendo "            foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }"

También ha dado error, 

Creo que al insertar, estoy haciendo mal, 

¿Me lo puede indicar por favor?

 

Link to comment
Share on other sites

Hola @ExpertoPrestaShop y @rhhotelsupply

Por desgracia mi versión de Prestashop (8.1.7) debe ser distinta de la tuya porque en la posición 636 no tengo ese código.....yo lo tengo en 660

        if ($product['id_product_attribute']) {
            // Displayed only if all combinations are out of stock (stock is <= 0)
            $product = new Product((int) $product['id_product']);
            if (empty($product->id)) {
                return false;
            }

            foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }
            }
        } elseif ($product['quantity'] > 0) {
            // Displayed only if the product stock is <= 0
            return false;
        }

Es raro que la sugerencia de @ExpertoPrestaShop no funcione.

        if ($product['id_product_attribute']) {
            // Displayed only if all combinations are out of stock (stock is <= 0)
            $product = new Product((int) $product['id_product']);
            if (empty($product->id)) {
                return false;
            }

            //foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
              if (!$combinations_list = $product->getAttributesResume($this->language->getId())) {
                return false;
            }

            foreach ($combinations_list as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }
            }
        } elseif ($product['quantity'] > 0) {
            // Displayed only if the product stock is <= 0
            return false;
        }

A ver si hay suerte!

Ten en cuenta que los cambios en estos ficheros se pierden con cada actualización que hagas de Prestashop.

 

Edited by Manuel_GT (see edit history)
Link to comment
Share on other sites

hace 16 horas, Manuel_GT dijo:

Hola @ExpertoPrestaShop y @rhhotelsupply

Por desgracia mi versión de Prestashop (8.1.7) debe ser distinta de la tuya porque en la posición 636 no tengo ese código.....yo lo tengo en 660

        if ($product['id_product_attribute']) {
            // Displayed only if all combinations are out of stock (stock is <= 0)
            $product = new Product((int) $product['id_product']);
            if (empty($product->id)) {
                return false;
            }

            foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }
            }
        } elseif ($product['quantity'] > 0) {
            // Displayed only if the product stock is <= 0
            return false;
        }

Es raro que la sugerencia de @ExpertoPrestaShop no funcione.

        if ($product['id_product_attribute']) {
            // Displayed only if all combinations are out of stock (stock is <= 0)
            $product = new Product((int) $product['id_product']);
            if (empty($product->id)) {
                return false;
            }

            //foreach ($product->getAttributesResume($this->language->getId()) as $combination) {
              if (!$combinations_list = $product->getAttributesResume($this->language->getId())) {
                return false;
            }

            foreach ($combinations_list as $combination) {
                if ($combination['quantity'] > 0) {
                    return false;
                }
            }
        } elseif ($product['quantity'] > 0) {
            // Displayed only if the product stock is <= 0
            return false;
        }

A ver si hay suerte!

Ten en cuenta que los cambios en estos ficheros se pierden con cada actualización que hagas de Prestashop.

 

buenos días, 

he reemplazado el código como tal, la web no da error, y de aquí a mañana, miro el log de errores, a ver qué dice, 

gracias

  • Like 1
Link to comment
Share on other sites

Genial,

Con esa modificación, el error ha desaparecido,

Por lo tanto, sigue habiendo otro error siguiente:

[04-Oct-2024 09:05:58 Europe/Madrid] PHP Notice: Undefined variable: category in /home/u931065366/domains/example.com/public_html/controllers/front/listing/CategoryController.php on line 250

[04-Oct-2024 09:05:58 Europe/Madrid] PHP Notice: Trying to get property 'active' of non-object in /home/u931065366/domains/example.com/public_html/controllers/front/listing/CategoryController.php on line 250

Y tenemos el código siguiente en CategoryController.php,

    public function getBreadcrumbLinks()
    {
        $breadcrumb = parent::getBreadcrumbLinks();

        foreach ($this->category->getAllParents() as $category) {
            if ($category->id_parent != 0 && !$category->is_root_category && $category->active) {
                $breadcrumb['links'][] = [
                    'title' => $category->name,
                    'url' => $this->context->link->getCategoryLink($category),
                ];
            }
        }

        if ($this->category->id_parent != 0 && !$this->category->is_root_category && $category->active) {
            $breadcrumb['links'][] = [
                'title' => $this->category->name,
                'url' => $this->context->link->getCategoryLink($this->category),
            ];
        }

        return $breadcrumb;
    }

La línea 250 corresponde a if ($this->category->id_parent != 0 && !$this->category->is_root_category && $category->active) {,

Espero vuestra ayuda, Gracias

 

Link to comment
Share on other sites

Hola @rhhotelsupply

¿Que versión tienes de Prestashop y PHP?

Los errores que muestras, me da la sensación de que podrían ser más por los datos de tu tienda que por la aplicación en si. Yo tengo Prestashop 8.1.7 lleno de categorías y productos y no me aparecen esos errores....

¿Cómo cargaste los datos? ¿Tienes identificado si el error te pasa en una categoría determinada o en todas?

Lo cierto es que los "NOTICE" que muestras no son errores del desarrollo sino inconsistencias en los datos.

 

Link to comment
Share on other sites

hace 26 minutos, Manuel_GT dijo:

Hola @rhhotelsupply

¿Que versión tienes de Prestashop y PHP?

Los errores que muestras, me da la sensación de que podrían ser más por los datos de tu tienda que por la aplicación en si. Yo tengo Prestashop 8.1.7 lleno de categorías y productos y no me aparecen esos errores....

¿Cómo cargaste los datos? ¿Tienes identificado si el error te pasa en una categoría determinada o en todas?

Lo cierto es que los "NOTICE" que muestras no son errores del desarrollo sino inconsistencias en los datos.

 

Hola @Manuel_GT

PS 1.7.8.11

PHP 7.4

Errores son así:

[08-Oct-2024 10:19:18 Europe/Madrid] PHP Notice: Trying to get property 'active' of non-object in /home/u931065366/domains/rhhotelamenities.com/public_html/controllers/front/listing/CategoryController.php on line 250

[08-Oct-2024 12:35:51 Europe/Madrid] PHP Notice: Undefined variable: category in /home/u931065366/domains/rhhotelamenities.com/public_html/controllers/front/listing/CategoryController.php on line 250

[08-Oct-2024 12:35:51 Europe/Madrid] PHP Notice: Trying to get property 'active' of non-object in /home/u931065366/domains/rhhotelamenities.com/public_html/controllers/front/listing/CategoryController.php on line 250

 

¿Puede que? la configuración de las categorías está mal en Backoffice, i.e. BBDD.

 

Link to comment
Share on other sites

Te ha costado decir los datos primordiales PS + PHP

El segundo post del 30 de septiembre ponía

Aquí tienes una lista de información que puede ser útil:
Tipo de instalación (nueva/actualización):
Versión PrestaShop:
Tema (predeterminado/personalizado):
Código (original/modificado):
Alojamiento:
Versión PHP:
Versión MySQL:
Navegador(es) afectado(s):

  • Haha 1
Link to comment
Share on other sites

hace 11 minutos, aixos dijo:

Te ha costado decir los datos primordiales PS + PHP

El segundo post del 30 de septiembre ponía

Aquí tienes una lista de información que puede ser útil:
Tipo de instalación (nueva/actualización):
Versión PrestaShop:
Tema (predeterminado/personalizado):
Código (original/modificado):
Alojamiento:
Versión PHP:
Versión MySQL:
Navegador(es) afectado(s):

Tipo de instalación (nueva/actualización): PS 1.6, con actualizaciones hasta 1.7.8.11

Versión PrestaShop: 1.7.8.11

Tema (predeterminado/personalizado): Personalizado Warehouse 

Código (original/modificado): Original 

Alojamiento: Cloud

Versión PHP: 7.4

Versión MySQL: NO SÉ CÓMO VERIFICARLO 

Navegador(es) afectado(s): NO SÉ DETECTARLOS. ESTOS ERRORES LOS VEO EN el archivo de log errores.

¡Gracias!

Link to comment
Share on other sites

58 minutes ago, rhhotelsupply said:

Tipo de instalación (nueva/actualización): PS 1.6, con actualizaciones hasta 1.7.8.11

la instalación fue realizada paso a paso? 1.6.1.18 a 1.6.1.19 y por ahí cada paso hasta 1.7.8.xx?

Link to comment
Share on other sites

No me acuerdo, la verdad.

Me acuerdo que las actualizaciones hasta PS 1.7 se habían realizado en el propio PrestaShop, luego a PS 1.7 en el servidor, y tampoco no me acuerdo bien el momento exacto del cambio de theme de uno anterior a warehouse.

¿Por qué? son tan importante las la secuencia de las actualizaciones.

¿No podemos sustituir? simplemente el archivo CategoryController.php o ¿Mirar? si la estructura de categorías está bien o mal configurado, lo cual me da más duda como fuente de este error.

Si eso, comparto luego la estructura de Categorías de BBDD.

Gracias 

 

hace 2 horas, aixos dijo:

Te ha costado decir los datos primordiales PS + PHP

El segundo post del 30 de septiembre ponía

Aquí tienes una lista de información que puede ser útil:
Tipo de instalación (nueva/actualización):
Versión PrestaShop:
Tema (predeterminado/personalizado):
Código (original/modificado):
Alojamiento:
Versión PHP:
Versión MySQL:
Navegador(es) afectado(s):

Tipo de instalación (nueva/actualización): PS 1.6, con actualizaciones hasta 1.7.8.11

Versión PrestaShop: 1.7.8.11

Tema (predeterminado/personalizado): Personalizado Warehouse 

Código (original/modificado): Original 

Alojamiento: Cloud

Versión PHP: 7.4

Versión MySQL: NO SÉ CÓMO VERIFICARLO 

Navegador(es) afectado(s): NO SÉ DETECTARLOS. ESTOS ERRORES LOS VEO EN el archivo de log errores.

¡Gracias!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...