【问题标题】:coldfusion custom tag return variableColdfusion自定义标签返回变量
【发布时间】:2014-09-14 20:22:24
【问题描述】:

我有一个自定义标签,当用户 ID 传递给它时,它会向用户的浏览器显示简历信息。我想将带有 html 输出的变量返回到调用页面,以便 cfc 可以使用它。任何人都可以评论如何在变量中返回 html 吗?下面是正确的方法吗?调用页面看起来像

In custom tag <cfset caller[attributes.returnVar] = '#cv_content#'>

calling page <cf_cv_info user_id="295725" returnVar="foo">

谢谢

【问题讨论】:

  • 要将 html 代码放入变量中,请使用 cfsavecontent 标签创建变量。然后使用 Scott 的回答将其返回到调用页面。

标签: coldfusion custom-tags


【解决方案1】:

在您的自定义标记中,您可以使用caller 范围,它是对调用自定义标记的页面的引用。

免责声明这并不是真正的“最佳实践”,因为自定义标签确实不应该到达它们自身之外——即使 ColdFusion 允许这样做。但这应该可行。

在您的自定义标签内:

<cfset caller[ attributes.returnVar ] = 'moo' />

在调用自定义标签的 .cfm 中。

<cf_myCustomTagThatSetsSomeValue userid="12345" returnvar="someValue" >
<cfdump var="#someValue#" />

根据 Adam Cameron 和 Joe Rinehart 的 cmets 编辑

【讨论】:

  • 我承认第二段中表达的观点,但我不同意。
  • 我确定你的意思是&lt;cfdump var="#somevalue#"&gt;
  • 我同意@scott-stroz,但我认为可以对自定义标签进行编码以明确它“突破”到调用者范围内。有一个属性“returnValue”,它接受一个字符串,该字符串将用作要在调用者范围内设置的值。类似于&lt;cfinvoke&gt; 使用同名属性的方式。
  • @JamesAMohler 正确。已修复。
  • Nothing - CFC、自定义标签、任何封装都应该“到达”自身之外。如果您要触及调用者范围,请使用属性传入要设置的变量名。这至少允许调用者防止与自己的变量发生冲突。
猜你喜欢
  • 2012-07-13
  • 2016-05-30
  • 1970-01-01
  • 2020-09-09
  • 2013-05-26
  • 2013-07-24
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多