输出变量存储在数据库中

时间:2012-02-18 13:26:46

标签: coldfusion coldfusion-9

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

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

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

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

但#VARIABLES.vendorLocale#按原样显示,而不是实际变量。无论如何要将“变量中的变量”正确输出吗?

这是在CF9服务器上。

2 个答案:

答案 0 :(得分:1)

如果你有一个字符串,即

variables.vendorLocal = 'foo';
variables.saveMe = 'This is a string for supplier "#variables.vendorLocal#'"' ;
WriteOutput(variables.saveMe); // This is a string for locale "foo"

然后coldfusion会尝试解析插入任何变量变量.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"

我希望这有帮助

答案 1 :(得分:0)

将数据库本身存储在数据库中有很多原因是个坏主意,但这不是你的问题,所以我不会进入那个问题。实现目标的一种方法是将存储的代码作为字符串,编写临时文件,在页面中包含该文件,然后删除该临时文件。例如,这是一个实现该概念的小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>
相关问题