Pregunta

¿Cómo consigo las asignaciones he definido en Application.cfc de trabajo en otras funciones en otros CFC?

es decir. this.mappings [ "plugins"] funciona bien en cualquier página, pero si trato de crear una instancia de un CFC que contiene una función que se llama this.mappings [ "plugins"] - falla.

gracias

EDIT: No estoy seguro de - esto es lo que estoy tratando de hacer: En Application.cfc:

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

y en stock.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>
¿Fue útil?

Solución

creo que está llamando a la incorrecta asignación. Usando su definición en Application.cfc:

this.mappings["plugins"]

A continuación, se hace referencia en otro código de "plugins" de modo:

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

HTH, si no publicar su código en la página de llamada.

Otros consejos

Dentro de un CFC, de los cuales Application.cfc es uno, el "este" ámbito sólo se refiere a que específica CFC. Así que cuando usted está en una página de CFM, que cae bajo la jurisdicción de la Application.cfc, entonces el "este" ámbito de aplicación es para el Application.cfc, pero cuando en un CFC, es para que el CFC en particular.

Dicho esto, ¿por qué se necesita para acceder a las asignaciones de estructura directamente? Si desea utilizar ese mapeo para cargar un objeto o incluir un archivo, puede simplemente hacer <cfinclude template="/plugins/path/to/myfile" /> o <cfset obj = createobject("component","plugins.path.to.my.cfc") />.

¿Cuál es su caso de uso para la necesidad de acceder a la estructura directamente? ¿Estás tratando de modificarlo?

* editado a código del arreglo

A menos que las cosas han cambiado en CF9, su primer error en el código que está definiendo las claves de mapeo sin una barra "/" al principio de cada nombre de mapeo.

Se están definiendo las asignaciones como

this.mappings["plugins"] =

En su lugar, debe ser

this.mappings["/plugins"] =

Aviso de la barra "/" en el nombre clave de la estructura. Debe nombrar cada mapeo de esa manera.

A continuación, había refiere a los mapeos como Sam Farmer mencionó en su comentario "

A continuación, se hace referencia en otro código de "plugins" de modo:

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top