PHP8 et smarty5

PHP8 et smarty5 - PHP - Programmation

Marsh Posté le 17-11-2024 à 17:59:32    

Bonjour,
je viens de reprendre mon site pour une mise à jour (PHP5 smarty 3) vers PHP8.3 avec smarty 5.4.
Je développe avec wampserveur 3.3.5
Je n'arrive pas à déclarer mon dossier plugins dans smarty
j'ai testé avec addPluginsDir et plugins_dir. et Testing plugins directory... n'a jamais été trouvé
J'utilise les plugins pour corriger quelques caractères mal interpreté principalement dans le configuration d'affichage des dates.  
Le site est en UTF8
 
Smarty Installation test...
Testing template directory...
C:\wamp64\www\site_pension\templates is OK.
Testing compile directory...
C:\wamp64\www\site_pension\templates_c is OK.
Testing plugins directory...
Testing cache directory...
C:\wamp64\www\site_pension\cache is OK.
Testing configs directory...
C:\wamp64\www\site_pension\configs\ is OK.
Tests complete.
 
Merci d'avance pour votre aider.
 

Code :
  1. require 'smarty-5.4.1/libs/Smarty.class.php';
  2. $smarty = new Smarty\Smarty;
  3. $smarty->setTemplateDir('C:/wamp64/www/site_pension/templates/');
  4. $smarty->setCompileDir('C:/wamp64/www/site_pension/templates_c/');
  5. $smarty->setCacheDir('C:/wamp64/www/site_pension/cache/');
  6. $smarty->setConfigDir('C:/wamp64/www/site_pension/configs/');
  7. $smarty->addPluginsDir('C:/wamp64/www/site_pension/smarty-5.4.1/libs/plugins');


Reply

Marsh Posté le 17-11-2024 à 17:59:32   

Reply

Marsh Posté le 17-11-2024 à 19:37:52    

Tu as essayé d'avoir des informations de débogages ?

Code :
  1. $smarty->error_reporting = E_ALL & ~E_NOTICE;
  2. $smarty->debugging = true;



---------------
D3
Reply

Marsh Posté le 18-11-2024 à 08:25:32    

oui j'ai essayé.
addExtension, addPluginsDir, plugins_dir, me retourne deprécié utiliser registerPlugin.
Dans tous les cas le test installation smarty "Testing Plugins directory" reste sans reponse et affichage d'une page blanche quand je tente d'utiliser le plugin
 
le plugin testé est  
function smarty_modifier_utf8_encode($string){return utf8_encode($string);}
{$smarty.now|date_format:"%A%e %B %Y"|utf8_encode}  j'utilise utf8_encode avec smarty3 et ça fonctionnait bien
 
J'ai comme l'impression que smarty ne trouve pas le plugin mais je ne vois pas quoi modifier.
J'ai rajouté dans smarty5/libs un dossier plugins,  comme il était prévédament dans smarty3.


Message édité par jmsch le 18-11-2024 à 08:29:19
Reply

Marsh Posté le 18-11-2024 à 10:50:56    

Page blanche => probablement une erreur 500, regarde dans tes erreurs Apache et PHP au niveau de ton Winamp pour savoir a quoi ça peut être du, un chemin d'accès pas adapté à environnement Windows par exemple, les concepteurs de plugin ne s'embarrasse pas toujours d'un site avec des chemins en mode Windows ( \ au lieu de / )...


---------------
D3
Reply

Marsh Posté le 18-11-2024 à 13:28:15    

voici l'erreur dans php dû à |utf8_encode qui semble être introuvable.
Je pense que quelque chose m'échappe dans l'intégration des plugins dans smarty5.
pas d'erreur Apache
 
les 2 erreurs que j'ai dans php
[18-Nov-2024 12:31:05 UTC] PHP Fatal error:  Uncaught  --> Smarty: Plugin 'utf8_encode' not callable <--  
  thrown in C:\wamp64\www\site_pension\smarty-5.4.1\src\Smarty.php on line 753
 
[18-Nov-2024 13:59:25 Europe/Paris] PHP Fatal error:  Uncaught  --> Smarty Compiler: Syntax error in template "file:C:\wamp64\www\site_pension\templates\../include/date.tpl"  on line 3 "{$smarty.now|date_format:"%e %B %Y"|utf8_encode} <br/>" unknown modifier 'utf8_encode' <--  
  thrown in C:\wamp64\www\site_pension\include\date.tpl on line 3


Message édité par jmsch le 18-11-2024 à 14:00:42
Reply

Marsh Posté le 18-11-2024 à 13:47:00    

mechkurt a écrit :

Page blanche => probablement une erreur 500, regarde dans tes erreurs Apache et PHP au niveau de ton Winamp pour savoir a quoi ça peut être du, un chemin d'accès pas adapté à environnement Windows par exemple, les concepteurs de plugin ne s'embarrasse pas toujours d'un site avec des chemins en mode Windows ( \ au lieu de / )...


 :lol: Tu veux dire Wampserver plutôt :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-11-2024 à 13:57:11    

Code :
  1. public function registerPlugin($type, $name, $callback, $cacheable = true) {
  2.  if (isset($this->registered_plugins[$type][$name])) {
  3.   throw new Exception("Plugin tag '{$name}' already registered" );
  4.  } elseif (!is_callable($callback) && !class_exists($callback)) {
  5.   throw new Exception("Plugin '{$name}' not callable" );
  6.  } else {
  7.   $this->registered_plugins[$type][$name] = [$callback, (bool)$cacheable];
  8.  }
  9.  return $this;
  10. }


https://github.com/smarty-php/smart [...] 9C1-L758C3
 
Peut être que les versions récente de Smarty sont maintenant compatible UTF8 sans avoir besoin de plugin (pacque bon utf8 c'est un peu la base depuis une vingtaine d'année :o ) ?
 
Tu as essayé de dire a Mysql que tu veux qu'il te sorte tes résultats venant de tes requêtes SQL en UTF8 (soit tu fait une requête SET NAMES 'utf8' soit tu précise le charset lors de l'instanciation de la connexion).
https://forum.phpfrance.com/framewo [...] 80270.html
 
Sino j'ai aussi vu ça mais c'est vieux : https://www.developpez.net/forums/d [...] -template/


Message édité par mechkurt le 18-11-2024 à 13:58:07

---------------
D3
Reply

Marsh Posté le 18-11-2024 à 13:57:43    

rufo a écrit :

:lol: Tu veux dire Wampserver plutôt :D


Oui tout à fait.  :jap:  


---------------
D3
Reply

Marsh Posté le 18-11-2024 à 14:43:17    

C'est suivant cet exemple que j'ai corrigé l'affichage les dates dans smarty3
https://www.developpez.net/forums/d [...] -template/  
j'ai déjà précisé le charset lors de la connexion
 
Je rencontre le soucie des caractères uniquement dans l'affichage des  dates.  
J'ai aussi testé ça : {$date|date_format:"%A %e %B %Y"|to_charset:'UTF-8'} jeudi 12 d?cembre 2024  
 
Je ne vois vraiment pas ce qui bloque, surtout que j'ai les mêmes scriptes avec php7 et smarty3 et là pas de problème avec l'utilisation de {$date|date_format:"%A %e %B %Y"|utf8_encode} .
 
Je pense reellement que ça provient de ma déclaration du plugin dans smarty5. Je pense avoir bien suivi la doc ou alors quelques chose m'echappe.

Reply

Marsh Posté le 18-11-2024 à 15:01:14    

Le fichier texte contenant le code source du template serait pas enregistré en ISO-8859-1 par hasard ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-11-2024 à 15:01:14   

Reply

Marsh Posté le 18-11-2024 à 17:10:15    

L'ensemble de mes fichiers sont en utf8.
j'avais essayé" avec to_charset:utf-8 mais pas essayé avec from_charset.
Alors voilà ce qui semble fonctionner
{$date|date_format:"%A %e %B %Y"|from_charset:'ISO-8859-1'}
 
du coup pas besoin de plugins smarty
Merci pour votre aide.


Message édité par jmsch le 18-11-2024 à 17:10:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed