首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有cfoutput标记的cfInclude

没有cfoutput标记的cfInclude
EN

Stack Overflow用户
提问于 2013-04-22 20:58:35
回答 3查看 716关注 0票数 1

好的,我有模板文件,知道需要在<cfoutput>标记之间放置一个<cfoutput>标记,但是在<cfinclude>周围放置<cfoutput>标记是行不通的,带有<cfmodule>的任何东西都不能工作,因为这不允许我操作variables范围。

所以,任何想法--不管多么复杂--都允许我包含这样一个模板文件,让它表现得就像在<cfoutput>标记之间一样吗?

上下文:这是我正在开发的“框架”,要求每个模板文件都以<cfoutput>标记开头和结尾似乎是一种浪费,特别是因为模板文件看起来越“冷”,IMO就越好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-23 01:15:56

我打算建议使用render()选项,但请注意,这在OpenBDML中是一个非常糟糕的功能(或者他们想将其称为CFML版本的任何东西),我认为应该避免。我看不出它如何不会导致每个请求都重新编译CFML,这是一种helluva开销。我认为最好在标记保存/读取时修改它,以便将其包装/解压缩到<cfoutput>标记中,这样只有在文件实际更改时才会重新编译它。这会比它读的要少得多。

在您的问题的提示下,我使用了对CFML编译过程做了一些修改。,说明了为什么将<cfoutput>标记放在单独的文件中不起作用。很抱歉,我们花了很长时间才写完这篇文章,并在这里作了跟进。

票数 6
EN

Stack Overflow用户

发布于 2013-04-25 13:12:01

我们在车轮上所做的就是用cfsavecontent标签包装cfinclude。

代码语言:javascript
复制
<cffunction name="renderInclude">
  <cfargument name="template" value="string" required="true">
  <cfset var myOutput = "">

  <cfsavecontent variable="myOutput"><cfoutput><cfinclude template="#arguments.template#"></cfoutput></cfsavecontent>


  <cfreturn trim(myOutput)>
</cffunction>
票数 2
EN

Stack Overflow用户

发布于 2013-04-22 22:24:21

找到了解决此问题的OpenBD特定方法。显然,我不是唯一遇到这个问题的人,OpenBD包含一个有用的渲染(),它负责评估cfml内容。所以我最后

代码语言:javascript
复制
<cfset cfml = fileRead(expandPath(...))>
...
<cfoutput>#render("<cfoutput>"&cfml&"</cfoutput>")#</cfoutput>

这不是一个很好的解决方案,因为我破坏了引擎本来会做的每页编译,但是,由于cfml在这些页面上相对简单,我认为这不是太大的问题。至少,与实际将文件写入磁盘相比,它对性能的影响更小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16156592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档