On Fri, Sep 08, 2000 at 08:01:58PM +0800, Li Dongfeng wrote:
Thanks for the correction. Now I see that PATH_INFO refers to the current page, not the calling page. I think the hidden input field solution is OK for me.
What is the *Traversal interface*? Do you mean the PARENTS enviroment?
The interface defines methods that let you convert a URL path into an object reference. It does the same thing as the ZPublisher does when processing a URL request. The PARENTS list is constructed during such traversal; it is a stack of references to objects that were 'traversed'; asked for a reference to an object given the name of the next URL element. The method you are looking for is restrictedTraverse: restrictedTraverse(path[, default]) where path is a object path seperated by '/' (no http://hostname part!). If the path starts with a '/' it is supposed to be an absolute URL from the site root, otherwise it is a relative path. Parent directory references ('../') are allowed. The method will check for the appropriate access along the way. The optional 'default' will be returned if the traversal fails. You should be able to use restrictedTraverse from DTML in Zope 2.2.1. In Zope 2.2.0 you will need an External Method to access it (this was a bug), and the method isn't implemented in any earlier versions of Zope. If you want to pass along a object reference as a hidden FORM variable, the you should use getPhysicalPath, and use _.string.join to turn the result of that into a useful string: <dtml-var "_.string.join(getPhysicalPath(), '/')"> -- Martijn Pieters | Software Engineer mailto:mj@digicool.com | Digital Creations http://www.digicool.com/ | Creators of Zope http://www.zope.org/ | ZopeStudio: http://www.zope.org/Products/ZopeStudio -----------------------------------------------------