2009-05-08 10 views
1

Je pensais que ce serait sympa de déplacer mes variables d'application dans une table qui peut être chargée surApplicationStart.Définition de variables d'application dynamiques ColdFusion à partir d'une requête

Mon intention est de permettre ANT de déployer l'application, et modifier quelques paramètres dans la base de données et le presto proverbiale ..

Dans mon code de test, le application.cfc a une simple requête pour appeler tous les noms des variables, puis un cfloop pour définir chaque variable dans la portée de l'application comme application.varname.

Aucune erreur n'a été signalée lors de l'exécution de l'application. Cependant, tenter de référencer les variables donne une erreur de type non définie.

Mes sensations d'araignée me disent que c'est quelque chose de petit et évident ... des idées?

Merci!

Mise à jour 1: Il semble que je suis à la recherche est la définition des noms variables dynamiques et le fait qu'ils sont des variables d'application ne semblent pas avoir beaucoup d'impact ..

http://www.bennadel.com/blog/152-Dynamic-ColdFusion-Variables-Via-Quoted-Naming.htm

Répondre

3

utilisation cfloop + cfset non cfoutput

+0

Je vais essayer un cfloop. Je pense que le principal problème pourrait avoir été que j'ai besoin de définir des variables par le nommage cité selon le lien que j'ai ajouté ci-dessus .. –

2

Si je lis correctement votre question, vous dites que vous définissez les variables d'application à l'intérieur d'une balise cfoutput?

Êtes-vous en utilisant cfoutput comme

<cfoutput query="queryName"> 
    <!--- Setting code in here ---> 
</cfoutput> 

Vous devez utiliser cfloop plutôt que cfoutput

<cfloop query="queryName"> 
    <cfset application.varName = queryName.varName /> 
</cfloop> 

Il est un peu difficile d'aider sans un code bien.

Ma question est la suivante: pourquoi commencez-vous à stocker vos variables d'application dans une base de données si vous voulez simplement les replacer dans la portée de l'application?

+0

Je peux donc les définir dans une base de données (chemins, nom de l'application, etc). Je n'aime pas entrer dans mon code pour changer les paramètres. Si vous regardez le lien que j'ai ajouté ci-dessus, il s'agissait d'adresser le nom de la variable dynamique avec des guillemets doubles. J'avais écrit cfoutput mais je voulais dire cfloop car c'est ce que j'utilisais. –

4

La réponse à ma question était de définir des noms variables dynamiques en citant les noms ..

<!--- Loop over the girls and alter the values. ---> 
<cfloop index="intGirl" from="1" to="3"> 

<!--- Randomly pick 1 (true) or 0 (false). ---> 
<cfif RandRange(0, 1)> 

<!--- Set the dynamic variable naming used quoted evaluation. ---> 
<cfset "Girl#intGirl#" = "super sexy" /> 

</cfif> 

</cfloop> 

Plus ici ...

http://www.bennadel.com/blog/152-Dynamic-ColdFusion-Variables-Via-Quoted-Naming.htm

6

Je ne sais pas si l'auteur était préconiser cette syntaxe ou simplement démontrer que cela fonctionne, comme un point d'intérêt.

Personnellement, je préfère la notation de tableau. Je pense que cela aide à promouvoir de bonnes habitudes de délimitation.

<!--- array notation ---> 
<cfset scope["staticName"& dynamicPortion] = "some value"> 

<!--- example 1 ---> 
<cfset variables["baseName"& x] = "oh brother"> 
<!--- example 2 ---> 
<cfset variables["baseName#x#"] = "oh brother"> 
+0

Je suis d'accord - quand quelqu'un vient derrière pour maintenir votre code, trouver va être discordant, voire confus. +1 pour la notation Array –