2009-06-16 4 views
2

このテンプレートが存在しないときにユーザーが/somePage.cfmのURLをヒットし、別のディレクトリのテンプレートを使用するシナリオを処理したいとします。私は、Apacheの書き換えなどでこれを行うことができることは分かっていますが、実際にはロジックを格納したくないので、Application.cfcのonTemplateMissingの動作をオーバーライドしてくれました。Application.cfcでのonMissingTemplateのオーバーライド

私のテストでは問題なく動作しているようですが、私はこのハックな解決策を実行することで心配しています。私はまだ見ていない部分を切っています(例えば、現在onSessionStartなど)、今後問題になる可能性があります。また、私のonRequest方法で、私はさらにisFooTemplate()がにtrueを返しますテンプレートの取り扱いやってる

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

注:ここでは

は、私が現在やっているものです。

答えて

4

私はこれがハックな解決策ではないと思います。これがメソッドの目的であり、falseを返す場合、必要に応じて管理者に設定した標準エラーハンドラがColdFusionによって呼び出されます。

onSessionStart()が実行されなかった唯一のケースは、ユーザーが初めてのページ要求時にonMissingTemplate()をヒットした場合です。何らかの理由でユーザーにセッションが必要な場合は、セッションスコープがonMissingTemplate()メソッドで使用可能であり、適切に処理されるはずであるため、セッションスコープの存在を確認できます。

2

実際にはonMissingTemplate not onTemplateMissing;これは推奨される方法であり、「ハッピー」ではありません。あなたはこのようにやっています。

関連する問題