Hi,
Today I was playing with the scaffolding feature of MG with CF9 Hibernate
ORM. Everything worked well but I didn't get MG to update a record, instead
it kept adding the modified record. It took me a while to find out I had to
add the record's primary key in the editform so that when the form with the
modified data is submit, Hibernate knows it has to update the record
instead of create a new one.
One of the things I tried before this dawned to me was to override the
scaffolds "commit event by doing this:
<modelglue>
<scaffold object="vrienden" type="delete,edit,list"
event-type="mainLayout" />
<scaffold object="vrienden" type="Commit" event-type="mainLayout">
<broadcasts>
<message name="vrienden.commit" />
</broadcasts>
<results>
<result do="vrienden.list" />
</results>
</scaffold>
</modelglue>
and including this in my ModelGlue.xml:
<controllers>
<controller id="vrienden"
type="modelglueapplicationtemplate.controller.vrienden">
<message-listener message="vrienden.commit" function="commit" />
</controller>
</controllers>
</modelglue>
(I split up the main ModelGlue.xml file in separate files and include those
with the <include template="/ModelGlueIncludes/xxx.xml" /> tag in
ModelGlue.xml.)
To see if this worked, I added a <cfdump> in controllers/vrienden.cfc:
<cffunction name="Commit">
<cfargument name="event">
<cfdump var="#event#"><cfabort>
</cffunction>
But this dump never showed up upon committing the editform. Instead a new
record was added or, when I found out about the pk, the existing record was
modified.
When I removed the line
<scaffold object="vrienden" type="Commit" event-type="mainLayout">
and I had an event handler defined in ModelGlue.xml for the event
"vrienden.commit", that got executed fine.
So resuming it looks like:
- the scaffold tag will create the event-handlers specified in it's type
attribute or all event-handlers (list,edit,view,commit,delete) when no type
attribute is specified;
- when specifying a subset of event handlers in the <scaffold> type
attribute and issuing a request with the missing event-handler MG returns
an error message that the event handler is not defined (e.g. <scaffold
type="list,edit,delete" ...> and issuing a request to
/?event=vrienden.commit);
- when adding a separate scaffold tag for the missing event, MG ignores
the <broadcast>,<results> or <view> subtags. Instead it behaves as if the
missing tag type was added to the scaffold's type attribute.
E.g.
<scaffold object="vrienden" type="delete,edit,list"
event-type="mainLayout" />
<scaffold object="vrienden" type="commit" event-type="mainLayout">
<broadcasts>
[...]
</scaffold>
behaves the same as
<scaffold object="vrienden" type="delete,edit,list,commit"
event-type="mainLayout" />
Changing the value of Coldspring.xml <defaultScaffolds> tag to not include
the "commit" event handler made no difference. Changing the order I
included my ModelGlue.xml files in the main ModelGlue.xml made no
difference either.
I checked the docs at
http://docs.model-glue.com/wiki/HowTos/HowToUseScaffolds#Scaffolds. Am I
misinterpreting or overlooking something here?
Thanks,
Marc
--
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