Coldfusion Coldbox推荐的访问旧式应用程序cfc中的变量集的方法
我将Coldbox添加到遗留应用程序中,遇到了一个问题,在使用Coldbox时无法从视图中访问某些变量。在onRequestStart方法中Application.cfc内部的现有遗留代码中,我们设置了几个变量,如下所示:Coldfusion Coldbox推荐的访问旧式应用程序cfc中的变量集的方法,coldfusion,lucee,coldbox,Coldfusion,Lucee,Coldbox,我将Coldbox添加到遗留应用程序中,遇到了一个问题,在使用Coldbox时无法从视图中访问某些变量。在onRequestStart方法中Application.cfc内部的现有遗留代码中,我们设置了几个变量,如下所示: VARIABLES.screenID = 0; VARIABLES.DSN = 'datasourcemain'; VARIABLES.DSNRO = 'datasourcereadonly'; VARIABLES.DSN
VARIABLES.screenID = 0;
VARIABLES.DSN = 'datasourcemain';
VARIABLES.DSNRO = 'datasourcereadonly';
VARIABLES.DSNADMIN = 'datasourceadmin';
VARIABLES.pagetitle = "Default Page Title for web application";
这只是变量集的一小部分。问题是,在遗留代码中,这些代码被广泛使用,比如页眉和页脚。当浏览到遗留页面时,仍然可以访问这些页面,但当通过coldbox发送请求时,变量变得不可访问。我的问题是,有没有一种推荐的方法可以让Coldbox知道这些变量,并将它们传递给视图,这样我就不必修改数百个文件?这取决于,有几个地方可以定义这些变量。根据给出的有限信息,我建议您将数据源信息添加到Coldbox.cfc>datasources结构(#1),并将默认页面标题添加到全局请求处理程序(#2)。至于屏幕ID,谁知道呢,祝你好运
设置
和数据源
结构,可通过wirebox注入处理程序/控制器
// Dependency Injection using WireBox
property name='settings' inject='coldbox:settings';
prc
(私有请求上下文)中
//config/Coldbox.cfc
...
coldbox = {
requestStartHandler: 'Main.onRequestStart'
};
...
// handlers/Main.cfc
component extends='coldbox.system.EventHandler' {
function onRequestStart( event, rc, prc) {
prc.screenID = 0;
prc.DSN = 'datasourcemain';
prc.DSNRO = 'datasourcereadonly';
prc.DSNADMIN = 'datasourceadmin';
prc.pagetitle = "Default Page Title for web application";
}
}
prc
//config/Coldbox.cfc
...
interceptors = [
{ class="interceptors.Globals" }
];
...
//interceptor/Globals.cfc
component {
property name='legacyGlobals' inject='LegacyGlobals';
function preProcess(event, interceptData) {
event.setPrivateValue('someLegacyGlobalVar', legacyGlobals.getSomeLegacyGlobalVar() );
}
}