【问题标题】:Access default variable on cfmodule attributes访问 cfmodule 属性的默认变量
【发布时间】:2021-03-10 16:50:25
【问题描述】:

我将 cfmodule 与模板一起使用,我希望访问模块的默认值,即使传入了其他值。这可能以某种方式吗?输出属性范围只是将整个数据传入,没有值的指示。

示例。

<cfmodule fielda="#data#" template="myTemplate.cfm" />

myTemplate.cfm

<cfparam name="attributes.data" default="1" />

假设数据的值为 2。是否可以从 myTemplate.cfm 中知道默认值为 1?

【问题讨论】:

  • AFAIK,在任何情况下都无法提取<cfparam> 默认值的集合。
  • 同意。我认为你能做的最好的就是通过复制参数结构(或只是键名)任何cfparam name="arguments.."语句被执行来模拟它。然后动态将其与params后面的arguments的内容进行比较。这两个结构共有的任何键都是显式传递给模块的参数。不是一个很好的解决方案,但可能会实现目标..
  • @SOS 我想到了这个。我们正在尝试获得一个自我记录的解决方案。我们打算将默认值与组件一起存储在数据库中,并将默认值加载到参数中。但是要查看文档,我们必须转到数据库。通过将它保存在代码中,它在工作时就在那里,但是我们不能在我们试图在 CMS 中做的其他一些事情中引用它。这只是一个看起来不像一个选项的选项。

标签: coldfusion lucee


【解决方案1】:

真的不可能。模板所能做的就是在模板中包含一堆 HTML。

但解决方案很简单:改用 .cfc。调用一个输出 HTML 的函数,而不是 <cfmodule>ing 模板。除非它被发送一个参数“mode=diagnostic”或类似的参数,在这种情况下它不会输出任何东西,而是返回一个结构。

所以你可以在诊断模式下调用函数,读取结构,或者在默认模式下调用它并输出内容。

有道理吗?

【讨论】:

  • 是的。我有一个复杂的问题,我正在尝试使用自定义 CMS 解决其中我想知道模块使用哪些数据。示例 我有一个大型数据对象传递到模块中。然而,该模块使用默认值为 default={prop1='',prop2=''} 的 cfparam。 (我们主要用它来记录 obj 中需要哪些 props。)传入的对象可能有 prop1 和 prop2,但还有其他属性。我希望能够使用代码确定该模块定义了 prop1 和 prop2 而没有另一行代码来排序缓存/记录它。我希望我可以访问那篇文章。
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 2018-04-29
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 2012-07-02
  • 2022-07-07
  • 2012-02-04
相关资源
最近更新 更多