Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

[Résolu] Balise literal?

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French
View previous topic :: View next topic  
Author Message
leomat
Smarty Rookie


Joined: 21 Oct 2010
Posts: 8

PostPosted: Thu Oct 21, 2010 2:26 pm    Post subject: [Résolu] Balise literal? Reply with quote

Bonjour tout le monde.

Il y a 6 mois, j'ai réalisé un gros projet en me servant de Smarty intensément. Durant ce projet, je n'ai jamais eu à utiliser les balises {literal}. Je n'en connaissais d'ailleurs pas l'existence.

Récemment, je me suis lancé dans un nouveau projet, et j'utilise encore Smarty. Mais maintenant, lors d'utilisation Javascript, je me retrouve obligé d'utiliser ces balises.

Imaginons le bout de code :
Code:

function retrieveQualities(){
    {foreach from=$qualities item=quality}
    ...
    {/foreach}
}


Il me sort une erreur à la compilation puisque je n'ai pas entouré mon code de {literal}. Mais si je mets des balises, il ne reconnait pas alors mon foreach, et j'suis à nouveau obligé de remettre des balises...
Et je trouve ça super ennuyeux de devoir se servir des balises "literal".

N'existe-t-il pas un moyen de ne pas les utiliser?


Last edited by leomat on Fri Oct 22, 2010 10:37 pm; edited 1 time in total
Back to top
View user's profile Send private message
Gowser
Smarty Pro


Joined: 19 Feb 2008
Posts: 104
Location: Nantes (France)

PostPosted: Fri Oct 22, 2010 8:08 am    Post subject: Reply with quote

Bonjour, il y a plusieurs solutions pour votre problème:

Solution 1 (un peu sale) :

Encapsuler les instructions javascript contenant des accolades dans les balises "literal" :

Code:

{literal}
function retrieveQualities(){
{/literal}
    {foreach from=$qualities item=quality}
    ...
    {/foreach}
{literal}
}
{/literal}


Solution 2 (plus propre mais plus perturbante) :

Changez les délimiteurs de balises smarty !

sujet : http://www.smarty.net/manual/fr/language.escaping.php

Grace a cette méthode , cela nous permet de mêler les 2 langages sans interférence.


Solution 3 (la voix de la raison) :

Ne mettez pas de JS dans vos templates !!! C'est fou ca cette manie de mettre du javascript hors des fichiers externes fait pour (qui en plus centralise les scripts et les rends plus maintenable)

Cordialement
Back to top
View user's profile Send private message Send e-mail
leomat
Smarty Rookie


Joined: 21 Oct 2010
Posts: 8

PostPosted: Fri Oct 22, 2010 9:00 pm    Post subject: Reply with quote

Merci pour votre réponse. La deuxième solution est peut-être celle que j'adopterai.

P.S : je n'inclus pas mon JS tel quel dans mes templates Wink
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP