2010-01-06 16 views
0

je:étendent Application.cfc, mais pas de la racine

1. inetpub/wwwroot/ProjectName/Application.cfc 
2. inetpub/wwwroot/ProjectName/Admin/Application.cfc 

Je veux # 2 pour étendre # 1 et passer outre la fonction onRequest. J'ai regardé dans la solution ApplicationProxy.cfc de Sean Corfields, mais c'est si votre projet est dans le dossier racine, ce qui n'est pas le cas.

Répondre

1

J'utilise includes dans onRequestStart et onApplicationStart. De cette façon, lorsque j'écris un autre Application.cfc, je peux simplement inclure le code.

1

Pouvez-vous créer un mappage vers le répertoire qui contient App.cfC# 1? Si c'est le cas, vous pouvez étendre "yourMappingName.application".

+0

Merci CFgears, mais le paramètre extends est appliqué avant tout mappage. –

+0

Pensez que les mappages créés dans l'administrateur CF ont été appliqués avant l'extension. – Sergii

+0

Ceci est sur un serveur partagé, donc je ne peux pas entrer dans l'Admin des FC. –

1

deux étend = "application" et étend = "/ Application" devrait fonctionner si Application.cfc vous devez étendre est à la racine.

+0

Merci Sergii, mais # 1 n'est pas dans la racine. –

+1

Alors, pourquoi ne pouvez-vous pas définir extends = "ProjectName.Application"? – Sergii

+0

Sur le développement, c'est dans \ ProjectName, mais en production c'est dans la racine. –

1

À la racine, créez un fichier nommé AppProxy.cfc. Son contenu est donc:

<cfcomponent output="false" extends="application" displayname="Application.cfc Proxy" hint="Extends the root application object so that subdirectories may extend it."> 
</cfcomponent> 

Ensuite, dans votre sous-répertoire, configurez votre application.cfc pour étendre AppProxy.cfc. Cela héritera avec succès vos méthodes du répertoire racine application.cfc.

<cfcomponent output="false" extends="AppProxy"> 
    <cffunction name="onRequestStart" output="true"> 
     <cfset super.onRequestStart() /> 
     <!--- Some other stuff happens here. ---> 
    </cffunction> 
</cfcomponent> 

Cela fonctionnera, soit dit en passant, même si l'AppProxy n'est pas dans le répertoire racine. Dans ce cas, assurez-vous que votre application "enfant ".cfc utilise la notation par points pour trouver l'AppProxy.

<cfcomponent output="false" extends="Path.To.Child.Directory.AppProxy"> 
     <cffunction name="onRequestStart" output="true"> 
      <cfset super.onRequestStart() /> 
      <!--- Some other stuff happens here. ---> 
    </cffunction> 
</cfcomponent> 
+0

Eric, Merci pour le pourboire! C'est le "Path.To.Child.Directory" qui me pose problème car sur notre serveur de développement c'est "Projects.ClientName", mais sur le serveur de production, c'est dans la racine. –

+0

Je me demande si je pourrais avoir le Application.cfc qui est en haut de l'arborescence étendre subfolder.ApplicationProxy, et donc le Application.cfc qui est dans le sous-dossier pourrait l'étendre aussi bien! Cela pourrait fonctionner! –