我试图在一个模型中访问Coldbox getSetting。
在文档中,以及在Coldbox Google Group的帖子中,它清楚地指出
模型是应用程序的一个完全孤立的层,除非您将依赖项注入到它们中,否则无法访问任何ColdBox。我们建议您看看我们的WireBox依赖注入,这样您就可以看到如何用它们所需的东西注入模型。
他们指出了这个文档:Injector
但是,除了重复上面引用的文档和Google的文章外,没有真正好的例子来说明如何做到这一点。
我尝试在我的模型顶部注入属性:
<cfcomponent displayname="myComponent" output="false">
<cfproperty name="mySetting" inject="coldbox:setting:mySetting" />
<cffunction name="myFunction" output="false" hint="index">
<cfset value = getProperty('mySetting') />
...这将返回错误消息:Variable GETPROPERTY is undefined.
我还试图在我的模型的功能中注入一个论点,但我知道这是行不通的。
<cffunction name="myFunction" output="false" hint="index">
<cfargument name="mySetting" inject="coldbox:setting:mySetting">有人能告诉我如何通过线盒注入将getSetting传递给一个模型,或者说任何方法吗?
如何在Coldbox模型中注入依赖项?
发布于 2014-04-10 21:39:25
你的注射看起来很好。问题是,您正在尝试使用"getProperty()“,而这不是在您的组件中定义的。它来自框架超级类型,仅存在于处理程序等框架对象中。属性注入在默认情况下将对注入对象的引用直接放入“变量”范围,因此您只需以variables.mySetting的形式访问它。
还可以使用scope属性控制该属性注入的范围:
Annotation
参数注入确实有效,但只适用于构造函数(init),因为DI引擎会自动调用它们。
另外,这个参考卡可能比完整的WireBox文档要简单一些,但是它显然没有涵盖那么多的信息:https://github.com/ColdBox/cbox-refcards/raw/master/WireBox/WireBox-Refcard.pdf
免责声明:我是ColdBox团队的一员。
发布于 2014-04-10 21:06:43
在/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设置的值。
或者,您可以在.property()配置中停止WireBox调用,并在KungFooDAO.cfc中添加一个CFPROPERTY,如下所示:
<cfproperty name="myDsn" inject="coldbox:datasource:myDsn" />
这些示例取自实时代码(为保护无辜而更改DSN名称)。
您的CFC模型的WireBox条目是什么样的?
https://stackoverflow.com/questions/22998115
复制相似问题