Is it possible to override just a template for a widget, without
creating a whole new Widget, WidgetFactory, Field and associated
interfaces?  I have whole modules full of empty classes just to get to
a special template, which it seems I ought to be able to do with a
<z3c:objectWidgetTemplate> directive , but no matter how I try I can't
get no satisfaction.

In my zcml, I have:

    <z3c:objectWidgetTemplate
        mode="display"
        template="templates/SpeciesList.pt"
        widget="z3c.form.interfaces.IMultiWidget"
        schema="zope.schema.interfaces.IList"
       />

and the template is:
    <div tal:content="view/oops">
        Body
    </div>
(and "oops" is not a valid attribute, so I fully expect an error here)

When I test my view:
>>> f=DistributionView(None,request)
>>> f.update()
>>> f.widgets.keys()
['rowCount', 'map', 'speciesCount', 'speciesList', 'dateRange',
'dataSources']
>>> w=f.widgets['speciesList']
>>> w.__class__
<class 'z3c.form.browser.multi.MultiWidget'>
>>> w.field.__class__
<class 'zope.schema._field.List'>
>>> print w.render()

<div id="form-widgets-speciesList"
     class="multi-widget required">
</div>


_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to