Jump to content

Theme para 8.0.4 incompatible en 8.1.2


_Veronika_

Recommended Posts

Buenas tardes compis

Estoy intentando instalar un tema que me va perfecto en un Prestashop 8.0 pero da error Exception cuando lo intento instalar en un PS 8.1.2. Vamos no debería haber diferencia pero lo más confuso es la información que me da el error:

ErrorException
in src/Core/Addon/Theme/ThemeManager.php (line 340)

    {        foreach ($hooks as $hook) {            

$this->hookConfigurator->addHook(                

$hook['name'],                

$hook['title'],                

$hook['description']

           );

       }      

 return $this;

   }

Y cuando voy a esa linea del archivo en la version 8.1.2 me pone esto:

    private function doCreateCustomHooks(array $hooks): self
    {
        foreach ($hooks as $hook) {
            $this->hookConfigurator->addHook(
                $hook['name'],
                $hook['title'],
                $hook['description']
            );
        }

        return $this;
    }

 

Pero es que es el mismo texto que en la versión 8.0. Entonces no entiendo como en una versión da error y en la otra no, siendo el mismo código. O algo estoy mirando mal. ¿Me puede alguien sacar de dudas? Gracias

Link to comment
Share on other sites

Hola @_Veronika_

¿Podrías indicar el texto de la excepción? El hecho de que el código fuente sea el mismo no indica nada. Probablemente el problema sean los datos. Por ejemplo, que el método reciba un null que antes aceptaba y ahora espera un valor.

doCreateCustomHooks esta llamando al método  addHook de la propiedad hookConfigurator que es un objeto de clase HookConfigurator en el namespace PrestaShop\PrestaShop\Core\Module

Y quizás es ahí donde han cambiado las cosas.

Pero no lo se. Sería bueno saber más sobre el error exacto.

Espero te sirva.

Link to comment
Share on other sites

Gracias @Manuel_GT

Como me estaba dando fallo al crear los nuevos hooks los creé yo manualmente y luego se instaló sin problema pero me da un fallo en la pagina del producto:

Notice: Array to string conversion in /home/public_html/ps81/classes/Tools.php on line 1381

Y en esa linea tengo este código:  return (new StringModifier())->str2url((string) $str);

Este sería el código completo:

    /**
     * Return a friendly url made from the provided string
     * If the mbstring library is available, the output is the same as the js function of the same name.
     *
     * @param string $str
     *
     * @return string|bool
     */
    public static function str2url($str)
    {
        return (new StringModifier())->str2url((string) $str);
    }
 

Alguna idea de porque puede darme este error? Gracias

Link to comment
Share on other sites

Hola @_Veronika_

Yo entiendo que lo que sucede es que el sistema te avisa de que estas enviando un array dentro de la variable $str en lugar de una cadena de texto. El problema no está en la linea 1381 sino en la parte de código que llama a la función Tools::str2url. Al intentar convertir a string te avisa.

Puedes hacer varias cosas. La primera es buscar la llamada y reemplazar el array por un string. También puedes estudiar lo que recibes en $str en la función str2url y tomar allí la decisión.

Aunque pueda ser más costosa, yo personalmente creo que es mejor la primera opción ya que modificar classes de prestashop es un problema a la hora de actualizar si no lo haces mediante un override. Y probablemente la llamada la haga el tema que podemos modificar sin problema.

Feliz año

 

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