Thanks guys, With the form / url variables in the event scope, does it identify which are which?
E.g if I want to loop through all the variables that are form variables in the event scope, can I do that? Also, if there url has "uuid", and the form has "uuid", what happens here? Many thanks, b On Thu, Jun 23, 2011 at 12:22 AM, Dan Wilson <[email protected]> wrote: > Ok > > I added the following two FAQ articles: > > > - > > http://docs.model-glue.com/wiki/FAQs/WhyAreControllerVariablesBeingIncorrectlySharedAcrossUserRequests > - > > http://docs.model-glue.com/wiki/FAQs/DoINeedToUseCFParamForFormAndURLVariables > > > As this is a public wiki, anyone on the list is free to clarify statements > or add sections they feel would help others. > > > DW > > > > On Wed, Jun 22, 2011 at 9:37 AM, Dan Skaggs <[email protected]>wrote: > >> Sure...glad to help. >> >> Dan >> >> On Jun 22, 2011, at 8:30 AM, Dan Wilson wrote: >> >> Hey Dan, >> >> That's a great explanation. Do you mind if I add some of your post to the >> FAQ section on the Wiki? >> >> >> DW >> >> On Tue, Jun 21, 2011 at 9:29 PM, Dan Skaggs >> <[email protected]>wrote: >> >>> Couple of things here: >>> >>> 1) Passing your entire populated model object to the view (via the >>> ModelGlue event object) is perfectly fine. There's no reason to break out >>> all the object's properties into separate values in the event. >>> >>> 2) ModelGlue controllers are created once on application init (or when >>> you manually reinit the app) and cached. Therefore, yes, the controller >>> objects are in effect singletons for the application. >>> >>> 3) Instead of doing <cfset variables.item ...>, you should do <cfset var >>> item = createObject(.....) />. Using variables.item actually would set the >>> object into the global memory space for the controller component (which >>> would be bad as that value is then cached as part of the controller >>> singleton--see #2). Using the "var" keyword on a variable inside a function >>> body ensures that the variable only exists for that execution of the >>> function (therefore it can't be stored and bleed over into other requests >>> that execute that same function). The variable is discarded after the >>> function completes executing. >>> >>> 4) Using the var keyword has nothing to do with the user session--they >>> are 2 completely different ideas. >>> >>> 5) There's no need to cfparam the url.uuid. ModelGlue automatically puts >>> all URL and form variables into the event object for you to make it easy for >>> you to find them. You just need to get the value out of the event when you >>> need it (see below). Should uuid not exist in the event, ModelGlue will >>> return you an empty string. You can optionally set a default value to use in >>> case the variable doesn't exist in the event (see >>> http://docs.model-glue.com/wiki/ReferenceMaterials/EventApi#GetValuename:stringdefault:anyfor >>> more information). >>> >>> Try updating your controller component as such: >>> >>> <cfcomponent output="false" >>> extends="ModelGlue.gesture.controller.Controller"> >>> >>> <cffunction name="view" access="public"> >>> <cfargument name="event" /> >>> >>> <cfset var uuid = arguments.event.getValue( "uuid" ) /> >>> <cfset var item = CreateObject("component", "model.item") /> >>> <cfset var status = "" /> >>> >>> <cfinvoke component="#item#" >>> method = "get" >>> returnvariable = "status" >>> uuid = "#uuid#" >>> > >>> >>> <cfset arguments.event.setValue("item", item) /> >>> >>> </cffunction> >>> </cfcomponent> >>> >>> Additionally, while there's nothing wrong technically with using a >>> <cfinvoke> there, you could shorten that up like so: >>> >>> <cffunction name="view" access="public"> >>> <cfargument name="event" /> >>> >>> <cfset var item = CreateObject("component", "model.item") /> >>> >>> <cfset item.get( uuid = arguments.event.getValue( "uuid" ) ) /> >>> >>> <cfset arguments.event.setValue("item", item) /> >>> >>> </cffunction> >>> </cfcomponent> >>> >>> Hope that helps clarify things a bit. If there's something you don't >>> understand, be sure to ping us back. >>> >>> Dan >>> >>> On Jun 21, 2011, at 8:09 PM, Brettski wrote: >>> >>> > And should I scope like >>> > >>> > <cfset Variables.item = CreateObject("component", "model.item")> >>> > .. >>> > <cfset arguments.event.setValue("item", Variables.myItem) /> >>> > >>> > >>> > On Jun 22, 11:01 am, Brettski <[email protected]> wrote: >>> >> the model bits and pieces are all used in the view, am I thinking >>> >> wrong to pass all this back to view? What else should I pass back a >>> >> struct or something? >>> >> >>> >> My vars aren't scoped, so does this mean there is one controller >>> >> "instance / singleton" for the app, and if I don't scope them they can >>> >> bleed? I think that's if I scope all vars they will stay in user >>> >> session? >>> >> >>> >> On Jun 22, 9:55 am, Roy Martin <[email protected]> wrote: >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >>> Off the cuff, you haven't var scoped your 'item' variable or your >>> return >>> >>> variable 'status'. So those variable will be subject to variable >>> bleed under >>> >>> load. As an additional point of feedback, passing the entire model >>> back to >>> >>> the view isn't best practice. It would be better if you had passed >>> just the >>> >>> return variable back to the model. Unless that's a typo? >>> >> >>> >>> Thanks, >>> >>> Roy >>> > >>> > -- >>> > Model-Glue Sites: >>> > Home Page: http://www.model-glue.com >>> > Documentation: http://docs.model-glue.com >>> > Bug Tracker: http://bugs.model-glue.com >>> > Blog: http://www.model-glue.com/blog >>> > >>> > You received this message because you are subscribed to the Google >>> > Groups "model-glue" group. >>> > To post to this group, send email to [email protected] >>> > To unsubscribe from this group, send email to >>> > [email protected] >>> > For more options, visit this group at >>> > http://groups.google.com/group/model-glue?hl=en >>> >>> -- >>> Model-Glue Sites: >>> Home Page: http://www.model-glue.com >>> Documentation: http://docs.model-glue.com >>> Bug Tracker: http://bugs.model-glue.com >>> Blog: http://www.model-glue.com/blog >>> >>> You received this message because you are subscribed to the Google >>> Groups "model-glue" group. >>> To post to this group, send email to [email protected] >>> To unsubscribe from this group, send email to >>> [email protected] >>> For more options, visit this group at >>> http://groups.google.com/group/model-glue?hl=en >>> >> >> >> >> -- >> Plutarch - "The mind is not a vessel to be filled but a fire to be >> kindled." >> >> -- >> Model-Glue Sites: >> Home Page: http://www.model-glue.com >> Documentation: http://docs.model-glue.com >> Bug Tracker: http://bugs.model-glue.com >> Blog: http://www.model-glue.com/blog >> >> You received this message because you are subscribed to the Google >> Groups "model-glue" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/model-glue?hl=en >> >> >> -- >> Model-Glue Sites: >> Home Page: http://www.model-glue.com >> Documentation: http://docs.model-glue.com >> Bug Tracker: http://bugs.model-glue.com >> Blog: http://www.model-glue.com/blog >> >> You received this message because you are subscribed to the Google >> Groups "model-glue" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/model-glue?hl=en >> > > > > -- > Plutarch - "The mind is not a vessel to be filled but a fire to be > kindled." > > -- > Model-Glue Sites: > Home Page: http://www.model-glue.com > Documentation: http://docs.model-glue.com > Bug Tracker: http://bugs.model-glue.com > Blog: http://www.model-glue.com/blog > > You received this message because you are subscribed to the Google > Groups "model-glue" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/model-glue?hl=en > -- Model-Glue Sites: Home Page: http://www.model-glue.com Documentation: http://docs.model-glue.com Bug Tracker: http://bugs.model-glue.com Blog: http://www.model-glue.com/blog You received this message because you are subscribed to the Google Groups "model-glue" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/model-glue?hl=en
