2009-11-04 13 views
0

J'ai un application.cfc dans un sous-répertoire de mon Webroot:Mise en scène mon application Coldfusion lors de l'utilisation de l'héritage CFC/augment

/app/application.cfc 

J'ai récemment ajouté un autre application.cfc dans un sous-répertoire de cela et il étend l'original application.cfc selon la méthode proxy décrite ici http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc:

/app/mysubdir/application.cfc 
/app/applicationproxy.cfc 

l'attribut extends pour la cfc subdir ressemble à ceci:

<cfcomponent extends="app.applicationProxy"> 

Tout cela fonctionne très bien jusqu'ici, mais voici plus d'arrière-plan: J'ai été mise en scène mon application en le mettant dans un répertoire à côté de/app appelé/Appstaging. Cela fonctionne bien, c'est-à-dire qu'il n'y a pas de conflit, car j'utilise tous les chemins relatifs, et mon application.cfc de niveau supérieur détermine dans quel répertoire il se trouve, définit une variable (par exemple application.appdir) et le code peut l'utiliser s'il en a besoin

Voici mon problème: maintenant que j'ai ce nouveau /app/mysubdir/application.cfc, j'ai besoin que le chemin de la extends soit réellement "appstaging.applicationProxy" s'il s'agit de l'arbre du répertoire de transfert. ColdFusion insiste sur le fait que la valeur de "extends" soit constante. Ça ne me laissera pas deviner où je suis et mettre dans le bon nom comme je l'ai fait partout ailleurs.

Y at-il un moyen de résoudre ce problème?

+0

Utilisez plusieurs instances de CF? – Henry

+0

Je suis sur un service d'hébergement partagé, donc je ne peux pas faire. Il y a quelque temps, quelqu'un m'a suggéré d'obtenir un deuxième compte d'hébergement, mais j'aimerais éviter cela si possible. – DaveBurns

+0

Que diriez-vous de ... Utilisez un outil construit comme ANT pour remplir le chemin en extension? – Henry

Répondre

1

Si vous utilisez CF8, utilisez la nouvelle structure this.mappings dans votre application.cfc. Ça ressemblerait à peu près à ça. Je vais vous laisser le soin d'écrire le code pour savoir si vous êtes dans/app ou/appstaging:

si (inAppStaging) this.mappings ["/ app"] = expandPath ("/ appstaging "); // ou autre ... juste obtenir un chemin d'accès complet à votre répertoire d'installation

De cette façon, lorsque ce fichier application.cfc est exécuté sous/app, il fonctionne comme il l'a toujours fait. Lorsqu'il est exécuté dans l'appstaging, il indique à coldfusion que pour cette application, "app" pointe vers "appstaging".

+0

hmmmm. à la réflexion, en le lisant de plus près, cela ne marchera probablement pas. Zut. –

+0

J'allais suggérer d'utiliser GetCurrentTemplatePath() et j'ai commencé à travailler sur un exemple quand j'ai vu ce que je parie que vous voyez, Marc ... le problème est que Application.cfc n'a pas accès au mapping pour "/ app" jusqu'à c'est fait en le créant, donc ça ne peut pas l'étendre. Vous devriez être capable de le faire avec une cartographie globale, cependant. –

+0

Je suis toujours sur CF7 (malheureusement). Une mise à niveau est prévue mais aucune ligne de temps n'a encore été définie. J'utilise déjà GetCurrentTemplatePath pour déterminer si je suis en application ou en appstaging. J'aime donc votre idée car elle correspond à la façon dont je travaille déjà. – DaveBurns