mari10 Posted December 28, 2023 Share Posted December 28, 2023 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 More sharing options...
mari10 Posted December 28, 2023 Author Share Posted December 28, 2023 el texto que me sale en esa línea es el siguiente: '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 More sharing options...
Manuel_GT Posted December 28, 2023 Share Posted December 28, 2023 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 More sharing options...
mari10 Posted December 28, 2023 Author Share Posted December 28, 2023 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 More sharing options...
Manuel_GT Posted December 28, 2023 Share Posted December 28, 2023 Si. Te puse en negrita el paréntesis añadido aunque se ve poco. 🙂 Espero te sirva. Link to comment Share on other sites More sharing options...
mari10 Posted December 28, 2023 Author Share Posted December 28, 2023 2 minutes ago, Manuel_GT said: Si. Te puse en negrita el paréntesis añadido aunque se ve poco. 🙂 Espero te sirva. Muchas gracias por la ayuda Link to comment Share on other sites More sharing options...
mari10 Posted December 28, 2023 Author Share Posted December 28, 2023 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: 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 More sharing options...
Manuel_GT Posted December 28, 2023 Share Posted December 28, 2023 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 More sharing options...
mari10 Posted December 28, 2023 Author Share Posted December 28, 2023 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 More sharing options...
Manuel_GT Posted December 28, 2023 Share Posted December 28, 2023 Si exacto. 🙂 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now