[Smarty] utf8_encode dans le Template
Bonjour,
J'ai un script qui affiche des titres d'article mais les accent sont remplacé par (�) sous PHP pas de soucis pour la conversion avec utf8_encode, mais comment faire dans le template directement?
Voici ma boucle qui affiche les données stocké dans un array l'utf8_encode ne fonctionne pas :
Code:
1 2 3 4 5
| <ul id="menu">
{section name=idx loop=$table_menu_init}
<li><a id="{$table_menu_init[idx].name|lower}" href="{$table_menu_init[idx].link}">{$table_menu_init[idx].name|utf8_encode}</a></li>
{/section}
</ul> |
Merci pour votre aide.
Smarty 3 intégration to_charset
Bonjour,
J'ai un problème similaire avec le formatage des caractères spéciaux.
Ma base Mysql est en UTF-8, mes pages php et tpl sont encodé en UTF-8, les metadata sont aussi sur UTF-8 et mon navigateur est paramétré sur UTF-8.
Malgré cela je doit encode les données récupérées en base.
Le poste m'a beaucoup intéressé car je ne veux pas faire l'encodage dans le php mais plutôt juste avant l'affichage et donc dans le template.
La solution de développer son propre modificateur est un bon palliatif mais depuis la version 3 de Smarty il y a 2 modificateurs: to_charset et from_charset basés sur la fonction php mb_convert_encoding.
Chose étrange, lorsque j'utilise le modifieur to_charset, mes caractères accentués sont tout simplement supprimés...
Print_r sur le retour de la requête:
Array ( [id] => 1 [titre] => Odyss�e [idAuteur] => 1 )
Array ( [id] => 2 [titre] => Sahara [idAuteur] => 1 )
Array ( [id] => 3 [titre] => Dragon [idAuteur] => 1 )
Array ( [id] => 4 [titre] => Une chance de trop [idAuteur] => 2 )
Array ( [id] => 5 [titre] => Ne le dis a personne [idAuteur] => 2 )
Array ( [id] => 6 [titre] => Disparu � jamais [idAuteur] => 2 )
Array ( [id] => 7 [titre] => Dune [idAuteur] => 3 )
Array ( [id] => 8 [titre] => La barri�re de santaroga [idAuteur] => 3 )
Array ( [id] => 9 [titre] => Les guerriers du silence [idAuteur] => 4 )
Array ( [id] => 10 [titre] => La citadelle hyponeros [idAuteur] => 4 )
Array ( [id] => 11 [titre] => Terra mater [idAuteur] => 4 )
code du template:
Code:
1 2 3 4
|
{section name=idx_smarty_tableau loop=$smarty_table_mysql}
<li>Valeur: {$smarty_table_mysql[idx_smarty_tableau]['titre']|to_charset:'UTF-8'}</li>
{/section} |
Affichage:
- Valeur: Odysse
- Valeur: Sahara
- Valeur: Dragon
- Valeur: Une chance de trop
- Valeur: Ne le dis a personne
- Valeur: Disparu jamais
- Valeur: Dune
- Valeur: La barrire de santaroga
- Valeur: Les guerriers du silence
- Valeur: La citadelle hyponeros
Une idée? Une erreur?
Merci d'avance pour votre aide