Coldfusion this.mappings не работает в функции cfc -> - PullRequest
1 голос
/ 14 января 2011

Как мне получить сопоставления, которые я определил в application.cfc, для работы в других функциях других cfcs?

т.е. this.mappings ["plugins"] прекрасно работает на любой странице, но если я попытаюсь создать экземпляр cfc, содержащий функцию, которая вызывает this.mappings ["plugins"] - это не получится

спасибо

EDIT: Я не уверен - вот что я пытаюсь сделать: В приложении .cfc:

this.mappings["Plugins"] = \
getDirectoryFromPath(getCurrentTemplatePath())&'Assets/Plugins';

и на складе.cfc:

<cfcomponent output="yes" > 
<cffunction name="showIndecies" access="public" output="yes" returntype="string">
<cfscript>
j = 1; 
variables.indeciesArray = ArrayNew(1); 
variables.indeciesFile = \
application.mappings["Plugins"]&'/StockMarketData/Data/indecies.csv'; 
</cfscript>

Ответы [ 3 ]

3 голосов
/ 14 января 2011

Я думаю, вы неправильно называете отображение. Используя ваше определение в application.cfc:

this.mappings["plugins"]

Затем будет ссылаться в другом коде на "плагины", поэтому:

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">

HTH, если не выложите свой код на страницу вызова.

1 голос
/ 26 сентября 2011

Если в CF9 ничего не изменилось, ваша первая ошибка в коде, который определяет ключи сопоставления без косой черты "/" в начале каждого имени сопоставления.

Вы определяете сопоставления как

this.mappings["plugins"] =

Вместо этого оно должно быть

this.mappings["/plugins"] =

Обратите внимание на косую черту "/" в имени структурного ключа.Вы должны называть каждое сопоставление таким образом.

Тогда вы будете ссылаться на сопоставления, как Сэм Фармер упомянул в своем комментарии: "

Затем будет ссылаться в другом коде" плагинами ".итак:

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">
1 голос
/ 14 января 2011

Внутри CFC, одним из которых является Application.cfc, область действия this относится только к этому конкретному CFC.Поэтому, когда вы находитесь на странице CFM, которая подпадает под юрисдикцию Application.cfc, тогда область действия «this» предназначена для Application.cfc, но когда она находится в CFC, она предназначена для этого конкретного CFC.сказал, зачем вам нужен прямой доступ к структуре отображений?Если вы хотите использовать это отображение для загрузки объекта или включения файла, вы можете просто сделать <cfinclude template="/plugins/path/to/myfile" /> или <cfset obj = createobject("component","plugins.path.to.my.cfc") />.

Каков ваш вариант использования для прямого доступа к структуре?Вы пытаетесь изменить его?

* отредактировано, чтобы исправить код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...