2010-11-20 6 views
0

Dans mon application CakePHP, je crée une variable de session dans un contrôleur, auquel j'ai besoin d'accéder dans un fichier ".js". Est-il possible de faire cela?Comment accéder à une variable de session dans un fichier .js dans CakePHP

+1

Pourquoi exactement? Les variables de session sont conçues pour être * seulement * côté serveur. – strager

+0

D'accord, les variables de session ou les variables côté serveur ne doivent pas être traitées/accédées directement dans le code côté client. Je me sens mieux de les passer comme je l'ai fait dans ma réponse –

+0

strager, sandeepan: donc vous dites que lorsque je sauvegarde le nom des utilisateurs dans la session je ne suis pas autorisé à accéder à ce côté client de données? – dogmatic69

Répondre

2

je suggère de les passer en tant que paramètres comme celui-ci -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')">Click</a> 

et ont la fonction JavaScript some_function() au lieu de les affecter en ligne. De cette façon, vous pouvez avoir le fichier javascript gratuit du code côté serveur. C'est le moyen le plus propre. Je pense aussi que, du fait que les variables de session sont côté serveur, elles ne doivent pas être gérées directement dans le langage côté client à l'aide du code en ligne.

+0

1

Vous devez générer dynamiquement votre fichier JS afin qu'il contienne la valeur souhaitée. Vous pouvez configurer votre serveur pour analyser .js fichiers via PHP, ou vous pouvez simplement nommer le fichier JS .php:

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>'; 
+0

est le mélange de code PHP en js bon à partir d'un point standard de codage? Ne vaut-il pas mieux séparer les fichiers js et passer les paramètres aux fonctions js si des valeurs côté serveur sont nécessaires au lieu de le faire? –

+0

@sandeepan: Bien sûr, j'allais d'abord proposer un script en ligne, mais j'ai édité ma réponse uniquement parce que l'OP a mentionné un fichier .js. – casablanca

+1

en utilisant $ _SESSION directement lorsque vous avez l'assistant de session n'est pas la meilleure pratique. l'utilisation de php pour pousser les actifs est pire, c'est un million de fois plus lent et ce qui se passe quand le navigateur le met en cache, ou vous allez le désactiver aussi. – dogmatic69

Questions connexes