Jump to content

Error


mari10

Recommended Posts

Buenos días, cuando entro en mi prestashop al iniciar sesión, me sale el siguiente error:

Unknown error en línea 695 en archivo /homepages/37/d576280150/htdocs/oldhtdocs/tienda/modules/themeconfigurator/themeconfigurator.php
[8192] Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`

 

¿Qué es y que debo hacer? Gracias

Link to comment
Share on other sites

Hola @mari10

El error que ves es simplemente porque han encadenado dos operadores ternarios. El operador ternario es una simplificación de una expresión IF. Viene a decir

condición ? haz esto si es verdadero : haz esto si es falso. En tu caso, si se cumple "a" hacer "b" y si no hacer "c".  Pero en esa linea han encadenado dos y el sistema te pide que le indiques con un paréntesis si lo que quieres es:

(a ? b : c) ? d : e

o

a ? b : (c ? d : e)

En tu caso particular, si (en negrita lo que va entre paréntesis)

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1

o

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1

Yo creo que es el segundo caso y pondría:

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : (($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1)

 

Link to comment
Share on other sites

6 minutes ago, Manuel_GT said:

Hola @mari10

El error que ves es simplemente porque han encadenado dos operadores ternarios. El operador ternario es una simplificación de una expresión IF. Viene a decir

condición ? haz esto si es verdadero : haz esto si es falso. En tu caso, si se cumple "a" hacer "b" y si no hacer "c".  Pero en esa linea han encadenado dos y el sistema te pide que le indiques con un paréntesis si lo que quieres es:

(a ? b : c) ? d : e

o

a ? b : (c ? d : e)

En tu caso particular, si (en negrita lo que va entre paréntesis)

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1

o

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1

Yo creo que es el segundo caso y pondría:

'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : (($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1)

 

Buenas, gracias por contestar, entonces si no me equivoco, lo que hay que hacer es añadirle un paréntesis al final no?

Link to comment
Share on other sites

8 minutes ago, Manuel_GT said:

Si. Te puse en negrita el paréntesis añadido aunque se ve poco.

🙂

Espero te sirva.

 

Perdone de nuevo, le mando una captura del codigo con las lineas y aparecen unos parentesis: image.png.28c05efdc6833e6bd4929a9c563187d7.png

la 695 es lo mismo que envie, pero tengo que poner los mismos parentesis? perdone la molestia y gracias

Link to comment
Share on other sites

Si, en esa linea está asignando la variable "context" con el resultado de la expresión que enviaste. He estado revisando la expresión despacio y es bastante enrevesada, con lo que no estoy ya tan seguro de que fuese la opción dos. Ahora creo que es la opción uno. Es decir, la expresión es:

'context' => ((Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1)) ? $this->context->shop->getContext() : 1

Creo que pretende determinar si es multitienda o no para devolver el contexto de la tienda o 1

Link to comment
Share on other sites

4 minutes ago, Manuel_GT said:

Si, en esa linea está asignando la variable "context" con el resultado de la expresión que enviaste. He estado revisando la expresión despacio y es bastante enrevesada, con lo que no estoy ya tan seguro de que fuese la opción dos. Ahora creo que es la opción uno. Es decir, la expresión es:

'context' => ((Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1)) ? $this->context->shop->getContext() : 1

Creo que pretende determinar si es multitienda o no para devolver el contexto de la tienda o 1

lo que cambia de nuevo son los parentesis no?

 

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...