2011-10-28 6 views
3

cffunctionに変数を設定しようとしています。ColdFusionオブジェクトのメソッドの変数名

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController.new()> 

上記コード作品:

結果はこれです。 local.layouts.appLayout構造体では、新しいメソッドの戻り値をappControlerに割り当てます。それが私に必要なものです。

私の問題は、そのステートメントのメソッド部分を動的に割り当てる必要があることです。私は別の変数coreRoute.actionがその関数の "new"に等しいが、構文を正しく取得できないようだ。

私はこれを試してみました:

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController.coreRoute.action()> 

動作しませんし、私はその理由を見ることができます。私もこれを試した:

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController & #coreRoute.action# & '()'> 

私はこの構文の多くのバリエーションを試してみましたが、私はそれを正しく得ることができません。

誰でもどのようにこれを行うには、アイデアがあります。ハマった。

ご協力いただきありがとうございます。

UPDATE:私はこれを使用して終了、それは素晴らしい仕事トッドシャープの助けを借りて:

<cfinvoke component="#local.appController#" method="#coreRoute.action#" returnvariable="local.act"> 

      <cfset local.layouts.appLayout = '../../app/layouts' & local.act> 
+0

どのようなエラーが表示されますか? を実行するとどうなりますか? local.appController.coreRoute.action()が文字列を返すことは確かですか? –

答えて

7

あなたは、動的メソッド呼び出しのための<cfinvoke>を使用してになります。 「ColdFusionの動的なメソッド呼び出し」のGoogle検索してみてください - ここでは上位の結果の一つだ:このアプローチを使用して、スクリプトで完全にそれをしたい場合は、次のことができ、また

http://www.bennadel.com/blog/1320-ColdFusion-CFInvoke-Eliminates-The-Need-For-Evaluate-When-Dynamically-Executing-User-Defined-Functions.htm

+0

それはうまくいった。私はcfinvokeの使用について考えていたはずです。私は最近、可能な限りcreateObjectを使用しようとし始めましたが、この場合、cfinvokeは仕事を完了しました。助けてくれてありがとう、ああ、いつもあなたのブログを読んでいました。いい物。再度ありがとう – Sequenzia

+0

ありがとう男!助けてうれしい! –

2

これはcfcの外にあり、cfcを使用していない場合は、「this」をメソッドのどこにでも変更するだけです。

+0

+1ありがとう@AdamTuttle。これは本当に私を助けました。私は本当に 'EVALUATE()'に頼らざるを得ませんでした。私はこれをJSのようにワンステップでやってほしいと思っていましたが、私はいつもEVALUATE()でこれを取っていました。チャオ:) – PeterKA

関連する問題