On Thu, Mar 1, 2012 at 10:33 AM, <[email protected]> wrote:

> I understand that part, but I am not sure how to go about it.
>

Create a CFC that has access="remote" wrapper methods for calls to other
CFCs. It's no more complicated than that. The only question is where you
want to put your other objects you're calling (inside the remote facade, in
the application scope, instantiate inside your facade object as needed ...).

I'll just show an example that will assume for the sake of argument that
you're going to put the CFCs your remote facade will use in the application
scope.

In Application.cfc you'd do something like:

<cfcomponent displayname="Application" output="false">
  <cffunction name="onApplicationStart" access="public" output="false"
returntype="boolean">
    <cfset Application.cfc2 = CreateObject("CFC2") />

    <cfreturn true />
  </cffunction>
</cfcomponent>

Note that assumes CFC2.cfc is in the root of your application, but if it's
elsewhere just use dot notation (the bug with the dot notation you
uncovered only impacts CFAJAXPROXY, not instantiating CFCs in other ways).

Facade CFC would be something like:

<cfcomponent displayname="Remote Facade" output="false">
  <cffunction name="getFoo" access="remote" returntype="string">
    <cfreturn Application.cfc2.getFoo() />
  </cffunction>
</cfcomponent>

CFC2 in the application scope would be what actually returns the data:

<cfcomponent displayname="CFC2" output="false">
  <cffunction name="getFoo" access="public" returntype="string">
    <cfreturn "Hello from CFC2!" />
  </cffunction>
</cfcomponent>

And as I said you don't *have* to put the other CFCs in the application
scope, that would just depend on what makes sense for your needs.

The other nice thing about this approach is if you're using CFC methods in
another way or returning the data in another format for non-AJAX calls, the
remote facade can massage the data as needed for use via AJAX calls.

Hope that helps.
-- 
Matthew Woodward
[email protected]
http://blog.mattwoodward.com
identi.ca / Twitter: @mpwoodward

Please do not send me proprietary file formats such as Word, PowerPoint,
etc. as attachments.
http://www.gnu.org/philosophy/no-word-attachments.html

-- 
online documentation: http://openbd.org/manual/
   google+ hints/tips: https://plus.google.com/115990347459711259462
     http://groups.google.com/group/openbd?hl=en

Reply via email to