Question

Je souhaite gérer un scénario dans lequel l'utilisateur frappe l'URL de /somePage.cfm lorsque ce modèle n'existe pas et utilise un modèle d'un autre répertoire. Je sais que je peux le faire via des réécritures dans Apache, etc., mais je ne souhaite pas vraiment y stocker de logique. J'ai donc essayé de remplacer le comportement de onTemplateMissing dans mon Application.cfc.

Cela semble bien fonctionner lors de mes tests, mais je suis inquiet en faisant cette solution simpliste. Je coupe quelques parties que je n’ai pas encore vues (par exemple, des méthodes que je n’utilise pas actuellement, telles que onSessionStart, etc. .) et pourrait rencontrer des problèmes à l'avenir.

Voici ce que je fais actuellement:

<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>

Notez que, dans ma méthode onRequest , je traite plus en détail les modèles pour lesquels isFooTemplate () renverrait true.

Était-ce utile?

La solution

Je ne pense pas que ce soit une solution simpliste. C’est à cela que sert la méthode. Si ColdFusion renvoie la valeur false, il invoquera le gestionnaire d’erreur standard que vous avez configuré dans l’administrateur.

Le seul cas où onSessionStart () n'a pas été exécuté est que l'utilisateur appuie sur onMissingTemplate () lors de la première demande de page. Si, pour une raison quelconque, vous souhaitez que l'utilisateur ait une session, vous pouvez vérifier l'existence de l'étendue de la session, car l'étendue de la session est censée être disponible dans la méthode onMissingTemplate () et être gérée de manière appropriée.

Autres conseils

Il s’agit en réalité de onMissingTemplate et non onTemplateMissing ; et c'est une pratique recommandée, pas du tout "hacky". Vous allez bien le faire de cette façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top