0

Webルートのサブディレクトリにapplication.cfcがあります。

/app/application.cfc

最近、そのサブディレクトリに別のapplication.cfcを追加しました。これは、ここで説明するプロキシメソッドを使用して元のapplication.cfcを拡張しますhttp://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc

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

サブディレクトリcfcのextends属性は次のようになります。

<cfcomponent extends="app.applicationProxy">

これはこれまでのところすべて正常に機能しますが、背景は次のとおりです。/appstagingという名前の/appの隣のディレクトリにアプリを配置することで、アプリをステージングしています。これは正常に機能します。つまり、すべての相対パスを使用するため、競合は発生しません。上位レベルのapplication.cfcは、それがどのディレクトリにあるかを判断し、変数(application.appdirなど)を設定し、コードはそれを使用して相対パスを構築できます。必要な場合。

これが私の問題です。新しい/app/mysubdir/application.cfcができたので、これがステージングdirツリーである場合、extendsのパスを実際に「appstaging.applicationProxy」にする必要があります。ただし、ColdFusionは、「extends」の値は一定であると主張しています。他の場所で行っているように、自分がどこにいるかを把握して適切なdirnameを入力することはできません。

これを解決する方法はありますか?

4

1 に答える 1

1

CF8を使用している場合は、application.cfcで新しいthis.mappings構造体を使用してください。おおまかにこんな感じになります。/appと/appstagingのどちらにいるかを判断するためのコードを書くのはあなたに任せます。

if(inAppStaging)this.mappings ["/ app"] = ExpandPath( "/ appstaging");//または何でも...appstagingディレクトリへのフルパスを取得するだけです

このように、このapplication.cfcを/ appで実行すると、いつものように機能します。アプリのタグ付けで実行すると、このアプリケーションの場合、「app」は「appstaging」を指していることがcoldfusionに通知されます。

于 2009-11-05T00:28:26.123 に答える