作为问题的一个简单例子:
<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
转储不会显示新传递的网址变量。
我显然在这里遗漏了一些非常基本的东西。
答案 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进行实际实现的渲染函数来做类似的事情。我对结果非常满意,并且比任意字符替换更容易分辨代码中的内容。