[Zope3-Users] Accessing adapter methods from zpt
jamesallwyn at yahoo.co.uk
Wed Aug 17 04:46:17 EDT 2005
When I started getting into adapters recently I
discovered that you can't (easily) access adapters
directly from ZPT. You will need to create a python
view class as an intermediate step.
Where you use a "context" statement to access
properties of an object in ZPT, e.g.:
<div class="field" tal:content="context/description"
you use a "view" statement to get at the methods of
the Python View Class, e.g.:
<div class="field" tal:content="view/rating" />
You use the ZCML to wire up the ZPT to the Python,
Where python file is the file the viewclass is in,
usually in the same browser folder, and ViewClass is
the name of a class defined within that file.
The ViewClass itself can do whatever logic you want to
prepare data for the ZPT, but if it's just grabbing
adapted methods and re-presenting them, it'll be
something like this:
from wherever import IAdapter
def __init__ (self, context, request):
self.context = context
self.request = request
self.adaptation = IAdapter(context)
"""Get the adapted doodle from the adapter"""
adapted = self.adaptation.adaptermeth()
Where "adaptermeth" is the method defined in your
adapter, and "IAdapter" is the name of your adapter.
You probably won't want to reference it as
self.adaptation - call if something more meaningful -
self.myimagefunction, or whatever.
You will need to def a method for each adapted method
you want to grab from adapters and pass to the ZPT.
If you have more than one adapter you want to access
from a given ZPT you need to make sure you import them
all, and use a different "self.adapterdesc =" in the
__init__, and you can then call each from the methods
of the view class.
Hope that helps,
--- Michael van Slingerland <z3uml at xs4all.nl> wrote:
> Hi all,
> I've made an adapter on the image content type and
> built a new view on the
> IImage interface. But what I can't find anywhere is
> how to access methods
> defined in the adapter from ZPT?
> Anyone knows howto do this?
> Zope3-users mailing list
> Zope3-users at zope.org
To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com
More information about the Zope3-users