Jump to content

Bug classes/Link.php on line 151


Recommended Posts

Bonjour à tous,

suite à une Erreur 500 dû à la duplication de produit mal supporter par prestashop j'avais l'erreur suivante:

 

Invalid product vars at line 104 in file classes/Link.php

J'ai appliqué la solution suivante:

Open that file and find the function called public function getProductLink(

 

replace --

 

$url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);

        if (!is_object($product))
        {
            if (is_array($product) && isset($product['id_product']))
                $product = new Product($product['id_product'], false, $id_lang, $id_shop);
            elseif ((int)$product)
                $product = new Product((int)$product, false, $id_lang, $id_shop);
            else
                throw new PrestaShopException('Invalid product vars');
        }

 

with

 

if (!$id_shop)
            $shop = Context::getContext()->shop;
        else
            $shop = new Shop($id_shop);
        


        if (!is_object($product))
        {
            if (is_array($product) && isset($product['id_product']))
                    $product = new Product($product['id_product'], false, $id_lang);
            else if (is_numeric($product) || !$product)
                $product = new Product($product, false, $id_lang);
            else
                throw new PrestaShopException('Invalid product vars');
        }

 

Ce qui m'a permis de voir à nouveau mon front office.

Mon problème est que maintenant je reçois l'erreur suivante:

Notice: Undefined variable: url in /home/www/mercuriusfrance/classes/Link.php on line 151

 

ce qui empêche d'aller au pages produits....

 

 

merci d'avance pour votre aide

Link to comment
Share on other sites

sur la première ligne de ce que vous avez remplacé on définit $url qui doit bien sur être utilisé plus loin (ligne 151) mais dans ce que vous avez mis à la place on ne définit pas $url

d'où votre erreur

Je ne vois pas pourquoi avoir touché au coeur de Presta suite à une mauvaise importation de produit ?

Link to comment
Share on other sites

Bonjour,

merci de votre retour.

Mon client a eu une erreur 500 suite à des duplicata de produit (et non des imports).

J'ai donc eu l'erreur précité et j'ai corrigé celle-ci en suivant ce qui est indiqué soit le remplacement du code incriminé.

 

Je n'ai donc plus maintenant d'erreur 500 mais bien un problème puisque je ne peux plus afficher les produits....

 

Je n'ai pas bien compris ce que vous me conseiller de faire? Pouvez vous s'il vous plait être plus explicite?

Link to comment
Share on other sites

J'ai donc eu l'erreur précité et j'ai corrigé celle-ci en suivant ce qui est indiqué soit le remplacement du code incriminé.

Ce qui est indiqué où ?

 

Je vous conseille surtout de remettre le code d'origine et de rechercher la cause veritable du problème !

 

Comme je vois venir votre réponse, remplacez votre première condition par ceci

if (!$id_shop) {
            $shop = Context::getContext()->shop;
$url = $this->getBaseLink($shop->id).$this->getLangLink($id_lang, null, $shop->id);
}
        else {
            $shop = new Shop($id_shop);
$url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);
}

Mais que c'est moche.

Vous allez au dela de multiples problèmes.

Link to comment
Share on other sites

merci pour le conseil. J'ai donc remis le fichier d'origine link.php.

Je me retrouve donc avec l'erreur suivante:

 

[PrestaShopException]

Invalid product vars
at line 104 in file classes/Link.php

98. 			if (is_array($product) && isset($product['id_product']))99. 				$product = new Product($product['id_product'], false, $id_lang, $id_shop);100. 			elseif ((int)$product)101. 				$product = new Product((int)$product, false, $id_lang, $id_shop);102. 			else103. 				throw new PrestaShopException('Invalid product vars');104. 		}105. 106. 		// Set available keywords107. 		$params = array();108. 		$params['id'] = $product->id;
Link to comment
Share on other sites

Ce qui est indiqué où ?

 

Une duplication de produit ne pose pas de souci normalement.

Qu'est-ce qui a été fait exactement ?

Quelle version utilisez-vous ?

Pourquoi ne pas remettre une copie de la base d'avant cette duplication ?

Link to comment
Share on other sites

En fait la modif n'était pas mal mais vous avez oublié de remettre

$url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);

Après la redéfinition de l'$id_shop.

Donc remplacez:

$url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);

        if (!is_object($product))
        {
            if (is_array($product) && isset($product['id_product']))
                $product = new Product($product['id_product'], false, $id_lang, $id_shop);
            elseif ((int)$product)
                $product = new Product((int)$product, false, $id_lang, $id_shop);
            else
                throw new PrestaShopException('Invalid product vars');
        }

par:

        if (!$id_shop) {
            Context::getContext()->shop = Shop::initialize();
            $id_shop = Context::getContext()->shop->id;
        }
        $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);

        if (!is_object($product))
        {
            if (is_array($product) && isset($product['id_product']))
                    $product = new Product($product['id_product'], false, $id_lang);
            else if (is_numeric($product) || !$product)
                $product = new Product($product, false, $id_lang);
            else
                throw new PrestaShopException('Invalid product vars');
        }
Edited by Eolia (see edit history)
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...