coldfusion cfsavecontent html页面包含动态变量

时间:2010-11-13 06:41:14

标签: coldfusion

作为问题的一个简单例子:

<cfsavecontent variable = "pageOutput">
   <cfoutput>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
         <title>#page_title#</title>
      </head>
      <body>
         <cfdump var="#URL#">
      </body>
      </html>
   </cfoutput>
</cfsavecontent>

我将此页面保存到磁盘。然后当我通过以下URL调用这个新生成的页面时:

http://blah/products.cfm?search_keyword=bathroom&search_category=451&search_province=Auckland

转储不会显示新传递的网址变量。

我显然在这里遗漏了一些非常基本的东西。

3 个答案:

答案 0 :(得分:1)

您需要做的是替换标记的开始或结束部分,以便在输出时有一个有效标记。像这样:

<cfsavecontent variable="page">
 <cfset sCfO = "<" >
 <cfset sCfC = "</" >
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
     <title><cfoutput>#page_title#</cfoutput></title>
  </head>
  <body>
     <cfoutput>#sCFO#</cfoutput>cfdump var="#URL#">
     <cfoutput>#sCFO#</cfoutput>cfoutput>
          #URL.myMessage#
      <cfoutput>#sCFC#</cfoutput>cfoutput>
  </body>
  </html>

希望这有意义......

答案 1 :(得分:0)

如果我正确理解您的解释,在使用cfsavecontent生成的页面变量已经替换,那么您在products.cfm中拥有静态HTML。尝试在编辑器中打开它并查看代码。

我有一个问题:在这里使用cfsavecontent的目的是什么?你想要实现什么目标?看起来你可能根本不需要它,简单地说'CFML应该可以完成这项工作。

答案 2 :(得分:0)

我更倾向于在一个函数中隐藏它,这个函数在你的例子中可以读得更好,你可以调用dumpVariable(url)并将其封装在一个函数中。我们实际上必须通过将数据库中的自定义标记解析为使用cfmodule进行实际实现的渲染函数来做类似的事情。我对结果非常满意,并且比任意字符替换更容易分辨代码中的内容。