Invokes component methods from within a ColdFusion page or component. You use this tag to reference a WSDL file and consume a web service from within a block of CFML code.
This tag can pass parameters to a method in the following ways:
cfinvokeargument
tag
argumentCollection
attribute<!--- Syntax 1 - this syntax invokes a method of a component ---> <cfinvoke component = "component name or reference" method = "method name" returnVariable = "variable name" argumentCollection = "argument collection" ...> OR <!--- Syntax 2 - this syntax can invoke a method of a component only from within the component. ---> <cfinvoke method = "method name" returnVariable = "variable name" argumentCollection = "argument collection" ... > OR <!--- Syntax 3 - this syntax invokes a web service ---> <cfinvoke webservice = "URLtoWSDL_location" method = "operation_name" username = user name" password = "password" inputParam1 = "value1" inputParam2 = "value2" ... returnVariable = "var_name" ...> OR <!--- Syntax 4A - this syntax invokes a component. This syntax shows instantiation with the cfobject tag. This cfinvoke syntax applies to instantiating a component with the cfobject tag and to instantiating a component with the createobject function. ---> <cfobject component = "component name" name = "mystringname for instantiated object"> <cfinvoke <!--- value is object name, within pound signs ---> component = "#mystringname for instantiated component#"> OR <!--- Syntax 4B - this syntax invokes a web service. This syntax shows instantiation with the cfobject tag. This cfinvoke syntax applies to instantiating a web service with the cfobject tag and to instantiating a web service with the createobject function. ---> <cfobject webservice = "web service name" name = "mystringname for instantiated object" method = "operation_name"> <cfinvoke <!--- value is object name, within pound signs ---> webservice = "#my stringname for instantiated web service#" >
cfargument,
cfcomponent,
cffunction,
cfinvokeargument,
cfobject,
cfproperty,
cfreturn
New in ColdFusion MX: This tag is new.
The following table shows which attributes of this tag are required:
If the component
attribute specifies a component name, the component with the corresponding name is instantiated, the requested method is invoked, and then the component instance is immediately destroyed. If the attribute contains a reference to an instantiated component object, no instantiation or destruction of the component occurs.
Method arguments can be passed in one of the following ways (and, if an argument is passed in more than one way with the same name, this order of precedence applies):
cfinvokeargument
tag
cfinvoke
tag (they cannot have the same name as a registered cfinvoke
attribute: method
, component
, webservice
, returnVariable
)
argumentCollection
attribute
For example, the params
struct contains three keys: a=1
, b=1
, c=1
. The following call is evaluated as if the arguments were passed to the method in the order a=3
, b=2
, c=1
:
<cfinvoke ... a=2 b=2 argumentCollection=params>
<cfinvokeargument name="a" value="3"> </cfinvoke>
Note: The following cfinvoke
tag attribute names are reserved; they cannot be used for parameter names: component
, method
, argumentCollection
, and result
.
<!--- immediate instantiation and destruction ---> <cfinvoke component="nasdaq.quote" method="getLastTradePrice" returnVariable="res"> <cfinvokeargument name="symbol" value="macr"> </cfinvoke> <cfoutput>#res#</cfoutput>
<!--- passing the arguments using argumentCollection --->
<cfset args = StructNew()> <cfset args.symbol = "macr"> <cfinvoke component="nasdaq.quote" method="getLastTradePrice" argumentCollection="#args#" returnVariable="res"> <cfoutput>#res#</cfoutput>
<!--- called only from within a component, MyComponent--->
<cfinvoke method = "a method name of MyComponent" returnVariable = "variable name">
<!--- using cfinvoke to consume a web service using a ColdFusion component --->
<!--- put the following code in a ColdFusion page named wscfml.cfm:---> <cfinvoke webservice='http://www.xmethods.net/sd/2001/BabelFishService.wsdl' method='BabelFish' translationmode="en_es" sourcedata="Hello world, friend" returnVariable='foo'> <cfoutput>#foo#</cfoutput>
For more information on the BabelFish web service example, see Developing ColdFusion MX Applications with CFML.
<!--- separate instantiation and method invocation; useful for
multiple invocations using different methods or values---> <cfobject name="quoteService" component="nasdaq.quote"> <cfinvoke component="#quoteService#" method="getLastTradePrice" symbol="macr" returnVariable="res_macr"> <cfoutput>#res#</cfoutput> <cfinvoke component="#quoteService#" method="getLastTradePrice" symbol="mot" returnVariable="res_mot"> <cfoutput>#res#</cfoutput>