Coldfusion 输出变量存储在数据库中

Coldfusion 输出变量存储在数据库中,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我将页面内容存储在数据库表中。页面内容还包括一些CF变量(例如“…此供应商向#variables.vendorLocale#”提供服务”) VARIABLES.vendorLocal是基于URL字符串在页面上设置的 接下来,访问CFC以从数据库中获取相应的页面文本 然后在页面上输出:#qryPageContent.c_content# 但是#VARIABLES.vendorLocale#是按原样显示的,而不是实际的变量。有没有办法让“变量中的变量”正确输出 这是在CF9服务器上 如果您有一个字符

我将页面内容存储在数据库表中。页面内容还包括一些CF变量(例如“…此供应商向#variables.vendorLocale#”提供服务”)

VARIABLES.vendorLocal是基于URL字符串在页面上设置的

接下来,访问CFC以从数据库中获取相应的页面文本

然后在页面上输出:#qryPageContent.c_content#

但是#VARIABLES.vendorLocale#是按原样显示的,而不是实际的变量。有没有办法让“变量中的变量”正确输出


这是在CF9服务器上

如果您有一个字符串,即

variables.vendorLocal = 'foo';
variables.saveMe = 'This is a string for supplier "#variables.vendorLocal#'"' ;
WriteOutput(variables.saveMe); // This is a string for locale "foo"
然后coldfusion将尝试解析它以插入变量variables.vendorLocale是什么。要解决这个问题,您可以使用一个占位符字符串,这个字符串在其他地方不太可能使用。通常您会看到[[NAME]]用于此目的,因此在本例中

variables.saveMe = 'This is a string for supplier "[[VENDORLOCALE]]'"' ;
WriteOutput(variables.saveMe); // This is a string for supplier "[[VENDORLOCALE]]"
现在你有了它,以后你可以用它来代替你的价值

variables.vendorLocal = 'bar';
variables.loadedString = Replace(variables.saveMe,'[[VENDORLOCALE]]',variables.vendorLocal);
WriteOutput(variables.loadedString); // This is a string for locale "bar"

我希望这会有所帮助

将代码本身存储在数据库中是一个坏主意有很多原因,但这不是你的问题,所以我不会深入讨论。实现所需功能的一种方法是将存储的代码作为字符串,编写一个临时文件,将该文件包含在页面中,然后删除该临时文件。例如,这里有一个实现该概念的小UDF:

<cfscript>
  function dynamicInclude(cfmlcode){
    var pathToInclude = createUUID() & ".cfm";
    var pathToWrite = expandPath(pathToInclude);
    fileWrite(pathToWrite,arguments.cfmlcode);
    include pathToInclude;
    fileDelete(pathToWrite);
  }

  language = "CFML";
  somecfml = "This has some <b>#language#</b> in it";
  writeOutput(dynamicInclude(somecfml));
</cfscript>

函数动态包含(cfmlcode){
var pathToInclude=createUUID()&“.cfm”;
var pathToWrite=expandPath(pathToInclude);
文件写入(pathToWrite,arguments.cfmlcode);
包括路径在内;
文件删除(路径写入);
}
language=“CFML”;
somecfml=“这里面有一些语言”;
写输出(dynamicInclude(somecfml));

Strange-我一使用Evaluate(在cfscript或常规标记中)就会收到一个错误:在第1列的第1行发现无效的CFML构造。ColdFusion正在查看以下文本: