1

私は ColdFusion に少し慣れていません (Java/OOP の世界から来ました)。

cfscript 内でいくつかの処理を実行し、値を出力するカスタム タグがあります。このカスタム タグ (A と呼びましょう) に別のカスタム タグ (B と呼びましょう。一種の「静的」関数を持つ、より一般的なカスタム タグと呼びましょう) を特定のパラメーターで呼び出すようにしたいと思います。

A 内から B を呼び出すにはどうすればよいですか? A で B からの戻り値を使用するにはどうすればよいですか?

Aのコード

<cfscript>
     //Call to other custom tag here?:
     //foo = [CUSTOMTAG param="stuff"];
     value = foo;
</cfscript>
<cfoutput>#value#</cfoutput>
4

2 に答える 2

6

古いコードを維持していますか?それ以外の場合は、ユーザー定義関数を作成する方が、古い学校のカスタム タグを使用するよりも、使用および/またはテストがはるかに簡単になります。

カスタム タグは、マークアップの生成などは得意ですが、変数を返すのは得意ではありません。

代わりに、Java で行うのと同じように、ユーザー定義関数 (UDF) を作成することを検討する必要があります。

カスタムタグが値を返すことができないと言っているのではなく、関数ほど自然ではありません。

カスタムタグから値を返すには、スコープ (呼び出し元Callerのスコープにマップされます) を利用する必要があります。variables何かのようなもの...

<!--- customTag.cfm --->
<cfset caller[attributes.returnVar] = "some value">

そして、次のように customTag を呼び出します。

<cf_customTag returnVar="foo">

<cfdump var="#variables.foo#">

発信者を追跡し、発信者スコープに値を設定するだけで、カスタムタグ内、カスタムタグ内、カスタムタグ内でカスタムタグを呼び出すことができます...

カスタム タグの出力を var にキャプチャする必要がある場合は、カスタム タグの呼び出しを<cfsavecontent> </cfsavecontent>.

于 2012-07-13T17:17:12.567 に答える
1

これが私がやったことです。私の「A」ファイルでは(AがBを呼び出すことを思い出してください):

<cfscript>
b = createObject("component","bName");
returnVal = b.method("paramInfo");
</cfscript>

私の「B」ファイルで

<cfcomponent displayname="bName">
<cffunction name="method" returntype="string" output="false">
<cfargument name="paramName" required="yes" type="string">
<cfscript>
 returnVal = paramName;
</cfscript>
<cfreturn returnVal>
</cffunction>
</cfcomponent>
于 2012-07-17T13:05:02.967 に答える