R. David Murray writes:
I was just looking at the ZCatalog code to figure out how to programatically add an index to a Catalog. I figured out how to do that fairly easily, but the code I was looking at has me a bit mystified. The method manage_addIndex is defined. The form that you use through the management interface to add an index has a submit button whose name is manage_addIndex:method. OK, that all looks like reasonable magic (magic because I don't know exactly what happens when a button gets marshalled as a method). The method is not marshalled but called with the remaining form fields as parameters. More precisely, Zope looks for the "method" starting from the action URL and then calls this method in the usual way with the form content as parameters.
This is well documented somewhere (together with the other nifty ":<type>" argument name suffixes. Unfortunately, I seem not to have a local copy of this document and therefore, cannot tell you where to find it, at the moment. The code, handling this, is in "ZPublisher.HTTPRequest.HTTPRequest.processInputs" (not easy to understand). Dieter