THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour à tous,


Je viens de mettre à jour mon projet depuis une version 2.0.x (2.0.2 dans mes souvenirs) à une version 2.3.5. J'ai un peu galéré mais ça semble s'être passé correctement.

En revanche, quand je suis dans mon catalogue, partie admin, je ne vois plus aucun produit. Tout le reste n'a pas l'air d'avoir bougé. J'ai vérifié en base et ma table produit est toujours complète, mes liaisons avec les catégories sont bien présentes et les catégories existent toujours.

J'ai essayé d'ajouter un nouveau produit via l'interface, l'ajout en base se fait bien mais lorsque je suis redirigé sur la fiche produit juste après l'enregistrement, je ne vois pas la totalité de la fiche et j'ai une erreur dans mes logs :
ERROR [ErrorListener.php:logException()] {109} 2019-08-05 17:27:53:Uncaught exceptionRelative paths are not allowed in assets names.

Egalement, lorsque je charge la page d'accueil de mon site, j'ai une belle erreur comme ça :
Whoops, looks like something went wrong. : InvalidArgumentException in BaseLoop.php line 319: Argument de boucle invalide: "cart".

Et j'ai également une dernière erreur lorsque j'essaye d'accéder à l'affichage du journal de logs depuis l'interface admin :
TheliaProcessException in SmartyAssetsManager.php line 210: Failed to find asset source file assets/js/jquery/jquery.ui.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js

Et il a raison, les assets ne sont pas générés là où il les cherche mais je ne vois pas le problème pour autant. Tout doit être lié aux assets / smarty... Avez-vous des idées ? Merci !

Last edited by Winslaks (08-08-2019 10:02:56)

Offline


Essaie de passer en mode développement pour avoir un affichage précis des erreurs : http://forum.thelia.net/viewtopic.php?id=11787

Et surtout vide bien le cache, manuellement si possible, en supprimant les dossiers "dev" et "prod" du dossier cache.


OpenStudio Toulouse

Offline


Merci pour ta réponse.

J'ai avancé depuis mon message. Il semblerait que ce ne soit pas lié aux assets, j'ai résolu les erreurs de chemin et j'ai toujours les mêmes problèmes :

- Quand je lance une page sur le Front, j'ai cette erreur : Whoops, looks like something went wrong. : InvalidArgumentException in BaseLoop.php line 319: Argument de boucle invalide: "cart".

- Dans la partie admin, tout fonctionne correctement SAUF ce qui est lié aux produits. Quand je vais dans Catalogue->CatégorieX, je n'ai pas d'erreur mais aucun produit ne s'affiche dans la liste (alors que je les avais bien avant la MaJ et qu'en base, ils sont bien liés et existent bien). Je n'ai pas d'erreur dans les logs non plus, comme si la requête qui cherche les produits ne renvoyait pas de résultat.

Si j'essaye d'ajouter un produit à ma catégorie, juste après le formulaire d'ajout, je suis redirigé sur la fiche Produit et là, j'ai que les menus (Général/SEO/Prix...) mais rien en dessous. Dans les logs, je n'ai pas d'erreur mais par contre, quand j'inspecte la page avec mon navigateur au niveau "Réseau", la page où je suis admin/products/update?product_id=110 me renvoie une erreur 500. Mais je ne sais pas ce que c'est, j'ai pas plus d'info.

J'ai supprimé les caches à la main (y compris ceux dans Web/), j'ai supprimé les htaccess et je suis bien en mode développement. J'ai vraiment l'impression que les requêtes qui touchent au produit ne renvoient pas de résultat, comme s'il manquait une liaison depuis la MaJ.

Offline


C'est certainement dû à un module. Pour trouver le fautif, désactives-les un par un...


OpenStudio Toulouse

Offline


J'ai désactivé tous les modules. Il ne reste plus qu'un module spécifique créé par l'ancien développeur. C'est lorsque je récupère le cart que ça déconne :

$cart = $this->getCart($this->getDispatcher(), $this->request);

Si je fouille, je vois que ça fait appel à la classe CartTrait qui est déprecated, c'est peut-être ça...

Offline


Y'avait bien un problème là dessus, j'ai modifié et j'avance mais j'ai toujours un problème pour récupérer la liste des produits. Comme tu le vois, je ne connais pas du tout Thelia mais si j'ai bien compris, quand je suis dans un template et que je fais :

{loop type="product" name="product_list"}
           
{/loop}

Je devrais avoir la liste complète de mes produits mais j'en ai que 3. En base tout a l'air normal, ces 3 produits c'est du spécifique, c'est plus des catégories de produit mais ils sont bien dans la table produit. Tous les autres produits sont bien en visible et ont bien une catégorie d'associée. J'ai l'impression que le développeur a surchargé la loop "Product" pour faire un genre de filtre mais je ne trouve pas... T'as une idée de ce que ça pourrait être ?

Offline


Sans voir le module complet, aucune idée. Mais jette un oeil du côté du config.xml, pour voir quels services sont définis, et ce que font ces services. Regarde aussi si une surcharge de la boucle "product" a été faite.


OpenStudio Toulouse

Offline


J'ai finalement trouvé ! Pas de surcharge mais par contre mes produits n'avaient pas de traduction en_US dans la table "product_i18n". En ajoutant une ligne pour l'anglais pour un produit, il s'affiche correctement partout après.

J'ai bien galéré pour trouver ça... Et j'ai certainement pas encore fini.

Merci pour ton aide en tout cas.

EDIT : C'est d'ailleurs le cas pour tout le reste. Mes menus n'avaient pas de traduction non plus, donc les boutons n'apparaissaient tout simplement pas. C'est lié à une jointure sur la table de trad de la colonne concernée, si pas de trad, le résultat ne sort pas.

Last edited by Winslaks (08-08-2019 10:50:39)

Offline


Verifie la config des langues. Tu peux choisir le comportement à adopter si une traduction est manquante.

download


OpenStudio Toulouse

Offline


Tout à fait, je viens de voir ça smile

Offline


Il me reste quand même un problème lié à l'erreur de base j'ai l'impression.

Initialement, j'avais une belle erreur comme ça :

Whoops, looks like something went wrong. :
InvalidArgumentException in BaseLoop.php line 319:
Argument de boucle invalide: "cart".

En creusant, j'ai remarqué que ça venait d'un getCart sur une surcouche de la loop Cart : L'appel se faisait comme ça :
$cart = $this->getCart($this->getDispatcher(), $this->request);

J'ai pas tout compris mais il semblerait que l'appel soit déprecated, donc, je l'ai remplacé sans grande conviction par :
$cart = $this->request->getSession()->getSessionCart($this->getDispatcher());

A ma grande surprise, ça a fonctionné, je n'ai plus l'erreur initiale. En revanche, je remarque que sur le site en prod (qui fonctionne), lorsque j'arrive sur le site, une entrée dans la table cart est créé avec un token sûrement issu d'une session. Et quand j'ajoute un produit au panier, il se sert de ce cart pour associer le produit. Or, en local, il créé bien la ligne dans Cart mais le token est à NULL. Ce qui fait que mon panier n'est pas conservé au rechargement de page.

J'ai l'impression que c'est la session qui est mal récupérée mais j'arrive pas à mettre le doigt dessus... Je sais que c'est dur pour toi de faire du debug sans voir le code mais déjà, est-ce que ça t'évoque quelque chose qui pourrait me mettre sur la voie cette erreur ?

D'avance merci.