How are you looking? - if you cfdump Request.MainPage and cfabort - while INSIDE that function then do you see something?

Alan Holden
(at work)


On 4/5/2012 12:24 PM, Benjamin Davis wrote:
Ok. That explains pretty much what I am seeing because of the way this thing is working. I think that I've come up with a good work around which should solve this and still be very simple, but now I have another problem! :)

What I was thinking was letting the index.cfm page into the buffer, then storing the buffer into a variable, reset the buffer and the load the design page. The problem that I have is that the buffer won't load into a variable. Here is what I've tried.

<cfset Request.MainPage = getPageContext().getOut().getString()>
<cfsavecontent variable="Request.MainPage"><cfoutput>#getPageContext().getOut().getString()#</cfoutput></cfsavecontent>

Neither one of these work. It just turns out as am empty string, but if I just do <cfoutput>#getPageContext().getOut().getString()#</cfoutput> I get the output. Strange....


On Thu, Apr 5, 2012 at 1:14 PM, Alex Skinner <[email protected] <mailto:[email protected]>> wrote:

    Cfset inside a function is not varred unless you put var in front.

    Variables with no scope infront and no var are local to the Cfc or
    template but bear in mind if you persist a Cfc or udf in a shared
    scope like application or session the data may persist across
    requests or in your case pages

    Alex


    On Thursday, 5 April 2012, Benjamin Davis
    <[email protected] <mailto:[email protected]>>
    wrote:
    > I was thinking that by default <cfset> inside of a function is
    considered a <cfset var>.  I am incorrect on this?  If not, does
    that mean that every <cfset> that I do on a single page (outside
    of a function) should also be var'd?
    >
    > On Thu, Apr 5, 2012 at 12:47 PM, Alex Skinner <[email protected]
    <mailto:[email protected]>> wrote:
    >>
    >> No because they need to be varred.
    >>
    >> On Thursday, 5 April 2012, Benjamin Davis
    <[email protected] <mailto:[email protected]>>
    wrote:
    >> > Thanks Alan!
    >> > I see what part of the problem here is.  When you dumped the
    variables on the index page, it is coming through the call of the
    scanner.LoadTemplate, which has access to the full cfc.  So, to
    test this.  I created another function in the scanner.cfc which
    just returned "Hi" and then I called it from the index.cfm page
    with <cfoutput>#testing()#</cfoutput> and I get "Hi" on my page,
    so the index.cfm has full access to the scanner.cfc......
    >> > I guess that I'm going to have to think this through a little
    bit more and come up with a better solution.
    >> > The strange thing still though, is that shouldn't each call
    to the function reset its local variables?  For example, if I do a
    dump of the variables scope inside of my LoadTemplate function,
    each call to the function has the exact same variables.  Shouldn't
    this be reset with each call?
    >> > Thanks for the name info.  I didn't realize that I had done
    that as I was throwing this together.
    >> >
    >> > On Tue, Apr 3, 2012 at 9:29 PM, Alan Holden <[email protected]
    <mailto:[email protected]>> wrote:
    >> >
    >> > It would be nice if we could post the salient parts of this
    code right in the mailing list, if you don't mind. You might get a
    broader response that way.
    >> >
    >> > NOTE: I get the same results from ACF9 as from OpenBD
    2.02...  G G G Ghost Vars!! RUN! AAAAyyyyeeeeee!!
    >> >
    >> > I put this line <cfdump var="#variables#"> at the end of your
    index.cfm file, and I can see all the things that CF considers
    "un-scoped".  For example, while you DO scope application.Scanner
    on startup, this object has 2 methods within (LoadTemplate &
    LoadPage) that have popped up in the "variables" scope at the time
    the dump is called.
    >> >
    >> > I think the issue might come from using the OnRequest()
    method as the "code shell" for the whole page; also perhaps that
    the methods in scanner.cfc are not well encapsulated. They read
    from external scopes and write directly to the page, as opposed to
    [returning values back - from input arguments passed in], like
    most well-behaved functions.
    >> >
    >> > Here are some quasi-related conversations I found - that
    might help:
    >> > http://forums.adobe.com/message/2285269
    >> >
    
http://stackoverflow.com/questions/8188015/do-variables-inside-application-cfc-functions-need-scoping
    >> > http://forums.adobe.com/thread/604831
    >> >
    
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=appFramework_04.html
    >> >
    >> > Finally, your application is named "Scanner", and you've also
    created an object named "Scanner" within it. Despite the
    referential separation by tiny dots, some people would cringe and
    shudder at such a naming practice.
    >> >
    >> > Al
    >> >
    >> >
    >> > On 4/3/2012 8:29 AM, Benjamin Davis wrote:
    >> >
    >> > Hey Alan,
    >> > Thanks for the info.  Attached is a zip file with the basic
    of basics.  In this example, the index.cfm file sets a variable
    and then when you to go page2.cfm, the variable is displayed, even
    though that page never specifically sets the variable.  Let me
    know what you think.
    >> > Thanks!
    >> > Ben
    >> >
    >> > On Mon, Apr 2, 2012 at 5:54 PM, Alan Holden <[email protected]
    <mailto:[email protected]>> wrote:
    >> >
    >> > It certainly seems like something (perhaps that function) is
    definitely causing the variables scope to go zombie on you. But
    you may need to whittle your code down to a core sample and
    actually post that - to get the greatest qty of help.
    >> >
    >> > Alan Holden
    >> > (at work)
    >> >
    >> >
    >> > On 4/2/2012 2:35 PM, Ben wrote:
    >> >
    >> > So, I have an interesting case that needs some external
    thought.  I've created a "framework" that handles all of my
    security as well as combining the page that is requested into a
    template file.  I've made this into a cfc that is loaded into the
    Application Scope.  In my OnRequest function, I call another
    function of my framework that loads any external files, the
    requested file, and then the template file where everything gets
    combined.  This has been working great, but then I realized that if
    >>
    >> --
    >> online documentation: http://openbd.org/manual/
    >> google+ hints/tips: https://plus.google.com/115990347459711259462
    >> http://groups.google.com/group/openbd?hl=en
    >
    > --
    > online documentation: http://openbd.org/manual/
    > google+ hints/tips: https://plus.google.com/115990347459711259462
    > http://groups.google.com/group/openbd?hl=en
    >

-- Alex Skinner
    Managing Director
    Pixl8 Interactive

    Tel: +448452600726 <tel:%2B448452600726>
    Email: [email protected] <mailto:[email protected]>
    Web: pixl8.co.uk <http://pixl8.co.uk>

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


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

--
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