jyo*_*eph 1 coldfusion cfc invoke
我正在调用cfc,cfc有一组默认参数:
<cfargument name="EMAIL_TEMPLATE_CODE" type="string" required="yes" hint="EMAIL_TEMPLATE_CODE is required.">
<cfargument name="EMAIL_TEMPLATE_SUBJECT" default="" type="string" required="no" hint="EMAIL_TEMPLATE_SUBJECT is NOT required.">
<cfargument name="EMAIL_TEMPLATE_BODY" default="" type="string" required="no" hint="EMAIL_TEMPLATE_BODY is NOT required.">
Run Code Online (Sandbox Code Playgroud)
我想做的是让这些参数不被要求(正如你可以通过required ="no"看到的那样)但是如果需要的话我想重新分配参数变量.
所以类似于:
<cfargument name="EMAIL_TEMPLATE_CODE" type="string" required="yes" hint="EMAIL_TEMPLATE_CODE is required.">
<cfargument name="EMAIL_TEMPLATE_SUBJECT" default="" type="string" required="no" hint="EMAIL_TEMPLATE_SUBJECT is NOT required.">
<cfargument name="EMAIL_TEMPLATE_BODY" default="" type="string" required="no" hint="EMAIL_TEMPLATE_BODY is NOT required.">
<cfinvoke component="#Request.CFCPath#.email_template" method="getEmailTemplate" returnvariable="getEmailTemplate">
<cfinvokeargument name="EMAIL_TEMPLATE_CODE" value="#ARGUMENTS.EMAIL_TEMPLATE_CODE#">
</cfinvoke>
<cfif getEmailTemplate.RecordCount>
<cfparam name="ARGUMENTS.EMAIL_TEMPLATE_SUBJECT" default="#getEmailTemplate.EMAIL_TEMPLATE_SUBJECT#" type="string">
<cfparam name="ARGUMENTS.EMAIL_TEMPLATE_BODY" default="#getEmailTemplate.EMAIL_TEMPLATE_BODY#" type="string">
</cfif>
Run Code Online (Sandbox Code Playgroud)
但是我无法覆盖默认的ARGUMENTS变量.你能发现我做错了吗?
编辑:
我这样做是因为如果没有参数传递给cfc,我想创建一个.如果参数没有长度,我想我应该cfset一个局部变量?
<cfif Len(ARGUMENTS.EMAIL_TEMPLATE_ADDRESS_FROM)>
<cfset EMailTemplateAddressFrom = ARGUMENTS.EMAIL_TEMPLATE_ADDRESS_FROM>
<cfelse>
<cfset EMailTemplateAddressFrom = getEmailTemplate.EMAIL_TEMPLATE_ADDRESS_FROM>
</cfif>
Run Code Online (Sandbox Code Playgroud)
<cfparam>
只有在之前未定义变量时才有效.您的函数参数未定义,它们恰好具有默认值.所以你可以这样做:
<cffunction name="foo">
<cfargument name="arg" type="string" required="yes">
<cfargument name="opt" default="default" type="string" required="no">
<cfif arguments.opt eq "default">
<cfset arguments.opt = "whatever dynamic value">
</cfif>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
这样,如果您不提供"opt"(或故意将其设置为"default"),它将被赋予某种动态默认值.如果需要,你仍然可以把它弄空.
您可以选择其他一种不可能的值,而不是"默认",这样可以区分"未提供"和"空".(有时我希望ColdFusion支持实际的空值...)