我正在将Coldbox添加到我们的遗留应用程序中,我遇到了一个问题,在使用Coldbox时,我们无法从视图中访问某些变量。在onRequestStart方法的Application.cfc中的现有遗留代码中,我们设置了几个变量,如下所示:
VARIABLES.screenID = 0;
VARIABLES.DSN = 'datasourcemain';
VARIABLES.DSNRO = 'datasourcereadonly';
VARIABLES.DSNADMIN = 'datasourceadmin';
VARIABLES.pagetitle = "Default Page Title for web application";这只是变量集的一小部分。问题是,在遗留代码中,这些都被使用得到处都是,比如页眉和页脚。当浏览到遗留页面时,这些变量仍然是可访问的,但是当通过coldbox发送请求时,变量变得不可访问。我的问题是,有没有推荐的方法可以让Coldbox知道这些变量,并将它们传递给视图,这样我就不必修改数百个文件?
发布于 2018-01-13 08:22:43
这取决于,有几个地方可以定义这样的变量。从给定的有限信息中,我建议您将数据源信息添加到Coldbox.cfc > datasources结构(#1),并将默认pageTitle添加到全局请求处理程序(#2)。至于screenID,谁知道呢--祝你好运!
settings和datasources结构,可以通过wirebox注入到处理程序/控制器中。//使用设置属性名进行依赖注入=‘inject='coldbox:settings';
prc (私有请求上下文)中。//config/Coldbox.cfc ...coldbox ={ requestStartHandler:'Main.onRequestStart‘};... // handlers/Main.cfc组件扩展=’coldbox.system.EventHandler‘{ function onRequestStart( event,rc,prc) { prc.screenID = 0;prc.DSN = 'datasourcemain';prc.DSNRO = 'datasourcereadonly';prc.DSNADMIN = 'datasourceadmin';prc.pagetitle =“web应用程序的默认页面标题”;}}
prc添加数据。//config/Coldbox.cfc ...拦截器={ class="interceptors.Globals“};... //拦截器/Globals.cfc组件{ property name='legacyGlobals‘inject='LegacyGlobals';函数preProcess(interceptData,interceptData) { event.setPrivateValue('someLegacyGlobalVar',legacyGlobals.getSomeLegacyGlobalVar() );} }
https://stackoverflow.com/questions/48219946
复制相似问题