Passage de smarty 2 à smarty 3 & 4

Auteur
Gregory
Publication
08-04-2023
08-04-2023
Mise à jour
13-04-2023
Note: 0.0 (0 vote)
Niveau
Normal
Passage de smarty 2 à smarty 3 & 4

Passage de smarty 2 à smarty 3 & 4 Depuis la version XOOPS 2.5.11-RC1 smarty 3 remplace smarty 2 et cela peut engendrer plusieurs problèmes sur votre site internet.
Ce tutoriel vous permettra de corriger les erreurs qui empêchent votre site internet de fonctionner correctement.


Un certain nombre d'avertissements peuvent apparaître, ceux-ci ne sont pas liés à la version de smarty mais à la version de php. Cette page n'est donc pas réellement liée au passage à smarty 3 mais il est intéressant de profiter de ce tutoriel pour expliquer comment enlever ces avertissements.

Pour ce genre d'avertissement :

Avertissement: Undefined array key "statut" dans le fichier /xoops_data/caches/smarty_compile/ca10e9d0_xmnews_cp_transition_default^b54d6c404c41406c1d4faddd394cf658fd4bf489_0.db.xmnewsadmincategory.tpl.php ligne 59

Avertissement: Attempt to read property "value" on null dans le fichier /xoops_data/caches/smarty_compile/ca10e9d0_xmnews_cp_transition_default^b54d6c404c41406c1d4faddd394cf658fd4bf489_0.db.xmnewsadmincategory.tpl.php ligne 59

Il est un peu plus complexe de trouver la ligne de l'erreur car l'avertissement indique un fichier de cache, nous n'aurons donc pas la ligne exacte de l'erreur qui est, dans ce cas, dans le template xmnews_admin_category.tpl


Corrections

Si on reprend les avertissements présentés ci-dessus, il suffit de s'occuper du premier élément "Undefined array key" :

Avertissement: Undefined array key statut dans le fichier /xoops_data/caches/smarty_compile/ca10e9d0_xmnews_cp_transition_default^b54d6c404c41406c1d4faddd394cf658fd4bf489_0.db.xmnewsadmincategory.tpl.php ligne 59

La variable "statut" ne semble pas définie !
Il suffit d'ouvrir le template xmnews_admin_category.tpl et chercher la variable "statut" avec l'outil de recherche.
Le code qui pose problème est :

<th class="txtcenter width5"><{$statut}>th>

Pour le corriger, il faut savoir si c'est une chaine de caractères qui est attendue ou une valeur logique.

  • Si c'est une chaîne de caractères, on modifie le code de la façon suivante :
    <th class="txtcenter width5"><{$statut|default:''}>th>

  • Si c'est une valeur logique, on modifie le code de la façon suivante :
    <th class="txtcenter width5"><{$statut|default: false}>th>