[Zope3-Users] Arranging widgets in a form / Limit size of input
fields
Tom Dossis
td at yoma.com.au
Thu May 3 18:42:46 EDT 2007
Hermann Himmelbauer wrote:
>>> I'd like to know how to arrange (e.g. group) widgets in a form with
>>> formlib.
>>>
>>> One way would be to create a custom template file, where each widget is
>>> placed via HTML. However, this is quite some work.
>> I've often done this and it doesn't seem like too much work. But I don't
>> dispute your evaluation.
>
> Well, when looking at the template, I roughly have to write this for every
> widget:
>
> <div class="label">
> <label for="field.name" title="The widget's hint"
> tal:attributes="for view/widgets/foo; title view/widgets/foo/hint"
> tal:content="view/widgets/foo/label">Label</label>
> </div>
> <div tal:condition="view/widgets/foo/error"
> tal:content="structure view/widgets/foo/error">Error</div>
> <div class="field">
> <input tal:replace="structure view/widgets/foo" />
> </div>
Hi Hermann,
I started a form layout add-on for formlib, see snippet below..
It's a very rudimentary first cut, and only provides a grid (table)
layout. I can't see myself getting any time to work on it in the
immediate future. If you think it might be useful I can send you the
package (which includes doctests).
Regards
-Tom
class SearchForm(LayoutMixin, form.EditForm):
interface.implements(ISearch)
form_fields=form.Fields(ISearch)
form_fields['results'].custom_widget = HTMLDisplayWidget
form_method='GET'
form_layout=VertLayout(
).addText(u"Training Guide",
).addWidget('search_type', label=u"Select one of the following
items",
).addText(u"<hr />"
).add(GridLayout(
).addText(u"Search Criteria", 0, 0, colspan=5,
).addWidget('region', 1, 0,
).addWidget('institution', 1, 2,
).addWidget('skill', 2, 0,
).addWidget('text', 2, 2,
).addAction('search', 2, 4,
).addWidget('results', 3, 0, colspan=5, label=None,
)
More information about the Zope3-users
mailing list