私はColdfusion8で最初のステップを実行しています。呼び出しているcffunctionを使用してコンポーネント/サービスをセットアップすることができました。
関数内で、エラーと対応するエラーメッセージを含む2x2テーブルを作成する必要があります。エラーメッセージは多言語であり、MySQLテーブルに保存されます。
問題:
CFFunctionタグ内から変数を参照する方法が見つかりません。これは動作しません:
// select from database
<cfparam name="Session.Sprache" default="DE">
<cfquery datasource="iln" name="texte">
SELECT *
FROM languages
WHERE sprache = "#Session.lang#"
</cfquery>
<cffunction name="createErrMsgsLog" returntype="object">
// create and populate
<cfset allErrMsgs=ArrayNew(2)>
<cfset allErrMsgs[1][1]="firma">
// not defined
<cfset allErrMsgs[1][2]="#tx_validate_firma#">
....
</cffunction>
質問:CFfunction
内で変数(別名#tx_validate_firma#)を正しく参照するにはどうすればよいですか?それらは常に未定義です。
編集:
わかりました。これはうまくいくようです:
私が呼んでいるapplication.cfcの内部:
<cfinvoke component="services.errorMsg"
method="createErrMsgsLog"
returnvariable="errMsgs">
</cfinvoke>
errorMsg.cfcの内部で私が行っていること:
<cfcomponent displayname="errorMsg">
<cffunction name="createErrMsgsLog">
<cfquery datasource="mine" name="texte">
SELECT *
FROM sprachen
WHERE sprache = "#Session.Sprache#"
</cfquery>
<cfoutput query="texte">
// column name = value
<cfset "#trim(bezeichner)#" = "#trim(textinhalt)#">
</cfoutput>
// build array
<cfset allErrMsgs=ArrayNew(2)>
<cfset allErrMsgs[1][1] = "firma">
<cfset allErrMsgs[1][2] = #tx_validate_firma#>
...
<cfset errMsgs = serializeJSON(allErrMsgs)>
<cfreturn errMsgs>
</cffunction>
</cfcomponent>
これは非常に多くのコードのようです...