Frage

Wie erhalte ich die Zuordnungen ich in Application.cfc zur Arbeit in anderen FCKWs in anderen Funktionen definiert haben?

d. this.mappings [ „Plug-in“] funktioniert gut auf jeder Seite, aber wenn ich versuche, eine cfc enthält eine Funktion zu instanziiert, dass Anrufe this.mappings [ „Plug-in“] - es funktioniert nicht.

Dank

EDIT: Ich bin nicht sicher - hier ist das, was ich zu tun versuchen: In Application.cfc:

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

und in 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>
War es hilfreich?

Lösung

Ich glaube, Sie die Zuordnung falsch anrufen. Mit Ihrer Definition in Application.cfc:

this.mappings["plugins"]

würde dann durch "Plug-in" so in anderem Code referenziert werden:

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

HTH, wenn nicht schreiben Sie den Code auf der anrufenden Seite.

Andere Tipps

In einem CFC, davon Application.cfc ist, die „this“ Anwendungsbereich nur bezieht sich auf diesem speziellen CFC. Also, wenn Sie in einer CFM-Seite sind, die unter dem Application.cfc Zuständigkeit fällt, dann ist das „this“ Anwendungsbereich ist für die Application.cfc, aber wenn sie in einem CFC, sein für diesen speziellen CFC.

sagte, dass, warum sollten Sie zugreifen müssen die Zuordnungen direkt struct? Wenn Sie diese Zuordnung laden ein Objekt verwenden möchten, oder er gibt eine Datei, können Sie einfach <cfinclude template="/plugins/path/to/myfile" /> oder <cfset obj = createobject("component","plugins.path.to.my.cfc") /> tun.

Was ist Ihr Anwendungsfall für die Notwendigkeit, die Struktur direkt zugreifen? Sind Sie versuchen, es zu ändern?

* zu Fixcode bearbeitet

Es sei denn, die Dinge haben sich in CF9, Ihr erster Fehler im Code geändert, dass die Zuordnungsschlüssel ohne einen Schrägstrich ist die Definition „/“ am Anfang jedes Mapping Namen.

Sie definieren die Zuordnungen als

this.mappings["plugins"] =

Es sollte stattdessen sein

this.mappings["/plugins"] =

Beachten Sie den Schrägstrich „/“ in der Struktur Schlüsselnamen. Sie müssen jede Zuordnung nennen auf diese Weise.

Dann würden Sie auf die Abbildungen beziehen sich Sam Farmer in seinem Kommentar erwähnt "

würde dann durch "Plug-in" so in anderem Code referenziert werden:

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top