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

Passage de variables Smarty dans une fonction javascript

 
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
JeremyG
Smarty n00b


Joined: 08 Nov 2009
Posts: 1

PostPosted: Sun Nov 08, 2009 8:58 pm    Post subject: Passage de variables Smarty dans une fonction javascript Reply with quote

Bonjour,

Alors voila j'ai un petit souci :

Déjà, voici le contexte :

Le fichier php :
Code:

<?php

global $g_oTheme;

$g_oTheme->config_load('french-utf-8.lng');
$g_oTheme->assign('redir', 'index.php');
$g_oTheme->left_delimiter = "-{";
$g_oTheme->right_delimiter = "}-";
$g_oTheme->display('page_login.tpl');

?>


le fichier "page_login.tpl"
Code:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<link rel="Shortcut Icon" href="./images/favicon.ico" />
<link href="themes/default/css/css.php" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="./scripts/test.js"></script>
</head>

<body>


<div id="loginUsernameDiv">
   <label for="loginUsername">-{#str_Login_Username#}-</label>
   <br>
   <input id="loginUsername" class="loginUsernameInput" type="text" name="username" value="" />
</div>
<div id="loginUsername.msg" class="badEntry"></div>
      
<div id="loginPasswordDiv">
   <label for="loginPassword">-{#str_Login_Password#}-</label>
   <br>
   <input id="loginPassword" class="loginPasswordInput" type="password" name="password" value="" />
</div>
<div id="loginPassword.msg" class="badEntry"></div>

<div id="loginSubmitDiv">
     -{nwp_button text=#str_Login_ButtonLogin# onclick="jsTestLogin('$redir', #str_Login_UsernameBadEntry#, str_Login_PasswordBadEntry#);" class="ok" id="alogin" submit=false}-
</div>

</body>
</html>


La fonction "nwp_button" est un addon Smarty que j'ai fait pour avoir un bouton personnalisé.


Le fichier "test.js" :
Code:

function jsTestLogin(redir)
{
   var err = 0;
   if( !$('loginUsername').value )
   {
      $('loginUsername.msg').setHTML(jsTestLogin.arguments[1]);
      $('loginUsername.msg').setStyle('display', 'block');
      err++;
   }
   else
   {
      $('loginUsername.msg').setHTML('');
      $('loginUsername.msg').setStyle('display', 'none');
   }
   
   if( !$('loginPassword').value )
   {
      $('loginPassword.msg').setHTML(jsTestLogin.arguments[2]);
      $('loginPassword.msg').setStyle('display', 'block');
      err++;
   }
   else
   {
      $('loginPassword.msg').setHTML('');
      $('loginPassword.msg').setStyle('display', 'none');
   }

   if( err ) {   return 0; }

   if( redir == 'undefined' ) { redir = ''; }
}



Le fichier de traduction "french-utf-8.lng" :
Code:

str_Login_Username = "Nom d'utilisateur :"
str_Login_UsernameBadEntry = "Vous devez spécifier un nom d'utilisateur !"
str_Login_Password = 'Mot de passe :'
str_Login_PasswordBadEntry = 'Vous devez spécifier un mot de passe !'
str_Login_Remember = 'Se souvenir de moi'
str_Login_LostPassword = 'Mot de passe oublié ?'
str_Login_ButtonLogin = 'Se connecter'



Comme vous pouvez le voir, j'utilise un fichier de configuration Smarty pour avoir un système de traduction, J'ai un fichier à part où se trouve toutes mes fonctions JavaScript.

Alors le souci, quand je lance ma fonction "jsTestLogin", avec comme argument une variable Smarty de mon fichier de traduction. Mon texte ne s'affiche pas, mais si je met du texte directement en argument, je le vois.

Pourtant pour les phrases de traductions elles fonctionnent pour des Labels par exemple.

Je n'arrive pas à comprendre pourquoi, pouvez-vous me dire le problème si vous le voyez ?

Merci
Back to top
View user's profile Send private message
Gowser
Smarty Pro


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

PostPosted: Mon Nov 09, 2009 12:11 pm    Post subject: Reply with quote

Bonjour,

Le problème ne viendrait pas du fait que vous n'encapsuler pas vos 2 variables avec des quotes ?

Pour moi, l'interprétation qui est effectuée par smarty de votre onclick est :

Code:

onclick="jsTestLogin('$redir', Vous devez spécifier un nom d'utilisateur !, Vous devez spécifier un mot de passe !);"


De même, vous avez un autre problème :
le 3ième arguments passé n'est pas correctement encapsulé par les '#' nécessaires -> str_Login_PasswordBadEntry# au lieu de #str_Login_PasswordBadEntry#

De plus, je me posais la question si la variable $redir était bien interprétée ?

Cordialement
Back to top
View user's profile Send private message Send e-mail
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