Jump to content

[Résolu] Erreur de compilation Smarty pour un javascript


Recommended Posts

Bonjour,
Je souhaite ajouter un petit script permettant de sélectionner une date dans un calendrier javascript.
J'ai récupéré un code qui fonctionne bien sur un autre site qui n'est pas en Prestashop, mais à l'ajout sur mon site en PS 1.4.017, j'ai une erreur de compilation de Smarty :

Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/home/sandbox/public_html/modules/attributewizardpro/attributewizardpro.tpl" on line 14 "$('#demande_information-date_debut').datepicker({'dateFormat':'dd\/mm\/yy'});" - Unexpected ":", expected one of: "}" , " "' in /home/sandbox/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php:431 Stack trace: #0


Le code Javascript en question est le suivant :
[removed] 
//<![CDATA[
$(document).ready(function() {
   $("#demande_information-date_debut").datepicker({"required":true,"dateFormat":"dd\/mm\/yy"});
});
//]]>
[removed]



Il semble ne pas apprécier les "2 points" (:) entre
"required" et true
et entre
"dateFormat" et "dd\/mm\/yy"

T'a-t-il un autre moyen d'écrire ces éléments afin que Smarty exécute correctement sa compilation ?

Merci pour votre réponse,

Link to comment
Share on other sites

Dans smarty 3 (presta 1.4) , {literal} est dépréciée. (toujours fonctionnelle cela dit)

Il suffit d'encadrer ton code literal par des accolades , en prenant soin de faire suivre l'accolade ouvrante d'un espace, et de précéder celle fermante d'un espace :

{ MonCodeJavascript }

Link to comment
Share on other sites

@broceliande

J'avais lu quelque part qu'avec la 1.4 ce n'était plus obligatoire, mais j'avais dû mal lire...!
Aussi, comme cela ne fonctionnait pas, je continuais avec l'ancienne méthode.
Donc, merci pour cette info! Il faut maintenant que je m'en souvienne...

Link to comment
Share on other sites

Oui je pense que ce que tu as lu est justement ce que je viens de décrire.

Si tu l'as lu en anglais dans le texte comme décris sur le site smarty , la confusion peut venir de là. En cas d'oubli , tu as toujours l'ancienne méthode qui fonctionne.... pour l'instant .... ;)

Link to comment
Share on other sites

Merci pour cette info, mais ça ne fonctionne pas avec juste une accolade.
Où les placer ?
J'ai mis juste avant le code JS :

{ $(document).ready(function() {


et en fin :

}); }



mais j'ai l'erreur de compilation.

Link to comment
Share on other sites

Oui exact , mais logique, je me suis mal exprimé :

{ moncode } ne s'applique pas à l'ensemble de ton bloc code javascript , mais aux seules accolades nécessaires dans le code js lui même :

function toto() { moncode; } 



et non

{ function toto(){moncode;} }



Le texte exact décrivant l ' évolution est :

With Smarty 3, the braces will be ignored so long as they are surrounded by white space.


En bon français : Dans smarty 3 , les accolades seront ignorées si elles sont entourées par un espace.
Link to comment
Share on other sites

ok, je comprends mieux ;-)

Finalement dans mon code initial, je n'ai aucun élément à rajouter, juste mettre des espaces après chaque accolade ouvrante et avant chaque fermante. Et là, je n'ai plus l'erreur de compilation.

Merci pour cette issue heureuse,

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...