2009-06-16 15 views
2

Ich möchte ein Szenario behandeln, in dem Benutzer eine URL von /somePage.cfm trifft, wenn diese Vorlage nicht vorhanden ist, und eine Vorlage aus einem anderen Verzeichnis verwenden. Ich weiß, dass ich das über rewrites in Apache usw. tun kann, aber ich möchte nicht wirklich Logik darin speichern, also gab ich an, onTemplateMissing Verhalten in meiner Application.cfc zu überschreiben.Überschreiben onMissingTemplate-Behandlung in Application.cfc

Es scheint in meinen Tests gut zu funktionieren, aber ich mache mir Sorgen mit dieser Hacky-Lösung Ich schneide einige Teile ab, die ich noch nicht gesehen habe (zB Methoden, die ich momentan nicht verwende wie onSessionStart) usw.) und könnte in Zukunft Probleme aufwerfen. Hier

ist, was ich momentan mache:

<cffunction name="onMissingTemplate"> 
    <cfargument name="targetPage" /> 
    <!--- Handle any templates that we're really loading from elsewhere ---> 
    <cfif isFooTemplate(arguments.targetPage)> 
     <cfset onRequestStart(arguments.targetPage) /> 
     <cfset onRequest(arguments.targetPage) /> 
     <cfset onRequestEnd(arguments.targetPage) /> 
     <cfreturn true /> 
    </cfif> 
    <cfreturn false /> 
</cffunction> 

Beachten Sie, dass auch in meinem onRequest Methode ich weiter für Vorlagen Handhabung zu tun, die isFooTemplate() auf true zurückkehren würde.

Antwort

4

Ich denke nicht, dass dies eine hacky Lösung ist. Dies ist der Zweck der Methode, und wenn ColdFusion false zurückgibt, ruft sie bei Bedarf den Standardfehlerhandler auf, den Sie im Administrator eingerichtet haben.

Der einzige Fall, in dem onSessionStart() nicht ausgeführt wurde, ist, wenn der Benutzer die onMissingTemplate() auf der allerersten Seitenanforderung trifft. Wenn Sie aus irgendeinem Grund eine Sitzung für den Benutzer benötigen, können Sie prüfen, ob der Sitzungsbereich vorhanden ist, da der Sitzungsbereich in der onMissingTemplate() -Methode verfügbar sein soll, und entsprechend behandeln.

2

Es ist eigentlich onMissingTemplate nicht onTemplateMissing; und das ist eine empfohlene Praxis, nicht "hacky" überhaupt. Auf diese Weise geht es dir gut.