Coldfusion 模型线盒注入中的Coldbox getSetting
我试图在模型中访问ColdboxColdfusion 模型线盒注入中的Coldbox getSetting,coldfusion,dependency-injection,coldbox,wirebox,Coldfusion,Dependency Injection,Coldbox,Wirebox,我试图在模型中访问ColdboxgetSetting 在文档和Coldbox Google Group的帖子中,它明确指出 模型是应用程序的一个完全隔离的层,没有 除非向ColdBox中注入依赖项,否则不能访问任何ColdBox。 我们建议您查看我们的接线盒依赖项注入,这样您就可以看到 如何为模型注入所需的内容 他们指向这个文件: 但是除了有点让人困惑的doc和googlegroup的帖子重复了上面的那句话之外,没有真正好的例子来说明如何做到这一点 我已尝试在模型顶部进行属性注入: <cf
getSetting
在文档和Coldbox Google Group的帖子中,它明确指出
模型是应用程序的一个完全隔离的层,没有
除非向ColdBox中注入依赖项,否则不能访问任何ColdBox。
我们建议您查看我们的接线盒依赖项注入,这样您就可以看到
如何为模型注入所需的内容
他们指向这个文件:
但是除了有点让人困惑的doc和googlegroup的帖子重复了上面的那句话之外,没有真正好的例子来说明如何做到这一点
我已尝试在模型顶部进行属性注入:
<cfcomponent displayname="myComponent" output="false">
<cfproperty name="mySetting" inject="coldbox:setting:mySetting" />
<cffunction name="myFunction" output="false" hint="index">
<cfset value = getProperty('mySetting') />
...
有人能告诉我如何通过线盒注入或任何方法将getSetting
传递给模型吗
如何在Coldbox模型中注入依赖项 在
/config/WireBox.cfc
中,为模型对象设置别名:
map('KungFooDAO').to('model.path.to.KungFooDAO');
您可以在此处将ColdBox设置作为属性插入:
map('KungFooDAO').to('model.path.to.KungFooDAO')
.property(name='myDsn', dsl='coldbox:datasource:myDsn');
现在,在KungFooDAO.cfc
的内部,您可以引用variables.myDsn
,它具有ColdBox设置的值
或者,您可以在WireBox配置中关闭.property()
调用,并在KungFooDAO.cfc
中添加CFPROPERTY
,如下所示:
这些示例取自实时代码(更改DSN名称以保护无辜者)
您的CFC型号的接线盒条目是什么样子的?您的注射看起来很好。问题是您试图使用组件中未定义的“getProperty()”。它来自框架超类型,仅存在于框架对象(如处理程序等)中。默认情况下,属性注入将对注入对象的引用直接放入“variables”范围,因此您只需作为variables.mySetting访问它 还可以使用scope属性控制属性注入的范围: 参数注入确实有效,但仅适用于构造函数(init),因为它们由DI引擎自动调用 此外,此参考卡可能比完整的WireBox文档更易于阅读,但它显然没有涵盖那么多信息:
免责声明:我是ColdBox团队的一员。我还没有放置一个!我早上第一件事就是试试这个。另外,我很欣赏你的工作,使用Github的几个插件。我在函数configure(){wireBox={}中放置映射到哪里?映射DSL在configure()方法内部,但在“wireBox”结构声明之外。请看这个例子:当然,记住映射DSL是将注释和属性直接放在CFC中的替代方法。两种方法达到了相同的目的。我确实尝试过使用变量。mySetting,它抛出了一个错误变量是undefinedWell,它突然开始为变量工作。mySetting,可能是缓存问题…谢谢你的卡片,我会亲自来听它工作。记住,即使接收注入的对象是暂时的,也需要重新注入框架,因为映射的元数据缓存在WireBox中以提高性能。最后一个问题,如果我要将其放置在WireBox配置中而不是模型上的属性注入中,我会将其放置在哪里?以下是wirebox配置的要点,它只是当前默认的显式映射,如果您选择使用它们,请转到下面的“//Map绑定”注释所在的位置。请参阅我在其他注释中留下的示例WireBox活页夹配置。
map('KungFooDAO').to('model.path.to.KungFooDAO')
.property(name='myDsn', dsl='coldbox:datasource:myDsn');