This content has been marked as final. Show 3 replies
spatz04 wrote:1 person found this helpful
> If I have a CFC like the one below:
> <!--- call init() automatically when the CFC is instantiated --->
> <cfset init()>
> <cffunction name="init" access="public" output="no"
> <cfargument name="cartID" type="UUID" required="yes" >
> <cfset variables.cartID = arguments.cartID>
> <cfreturn this>
> ...how do I pass a requried variable to the constructor? (I am using Flex as
> my front end with Flash Remoting to call my CFCs so I won't be instantiating
> this from ColdFusion).
> Any help appreciated....
You would have an <mx:method...> in your <mx:RemoteObject...> for the
init function in the CFC. Then you will need to call this from the
appropriate place in your flex application. Maybe in a function called
with the creationComplete event.
Say for example I have the following CFC called test.cfc:
<cffunction name="init" access="public" output="no" returntype="test">
<cfargument name="cartID" type="numeric" required="yes" >
<cfset variables.cartID = arguments.cartID>
...and I have the following CFM file that calls it.....test.cfm.....
<cfobject component="test" name="comp">
This will cause an error saying the parameter cartID to function init() was required but not passed in, because the constructor call ( <cfset init()> ) does not pass a parameter to the init function. The only way I can get this to work is to comment out the <cfset init()> line. I guess I don't need this in my scenario because I'm calling the init method directly anyway.
FYI: I've been following Ben Fortas phone selector example ( a good example of building a simple Flex/CF app):
Yes you would not use the <cfset init()> line in the pseudo constructor.1 person found this helpful
Then, as you where doing in your cfml example, you will call init()
directly in your code.
Then to translate this to your mxml, you would put a <mx:method
name="init" ...> tag in your <mx:remoteObject... tag block. Then as
some relevant part of your code you would call the init() method in your
mxml. Very likely on some creationComplete() event.
One thing to remember, without using more sophisticated techniques, a
CFC can not maintain state when using remote calls. This is true for
flex|flash remoting or web services. In other words you can't make one
call to a method to set a value, then make another call to return the
value when using remote methods.