[Zope] Instance of ZClass
Casey Duncan
cduncan@kaivo.com
Wed, 15 Aug 2001 10:20:11 -0600
Walter Hupfeld wrote:
>
> I want to build an instance of ZClass like
>
> <dtml-call "REQUEST.set('id',REQUEST.form['id_neu'])">
> <dtml-with "manage_addProduct['Tauschboerse']">
> <dtml-call "SkizzeClass_add(_.None,_, NoRedir=1)">
> </dtml-with>
> <dtml-call "REQUEST.set('meine_skizze',_[REQUEST.form['id_neu']])">
>
> <dtml-call
> "_['meine_skizze'].propertysheets.Beschreibung.manage_changeProperties({
> 'Name':REQUEST.form['Name'],
> 'Email':REQUEST.form['Email'],
> 'Sprache':REQUEST.form['Sprache'],
> .....
>
> where 'Sprache' is the name of a CHECKBOX. It works fine, if all checkboxes
> are checked. But if not all checkboxes are checked, I will get an keyerror.
>
> What can I do?
>
> --
> ----------- --------------------
> Walter Hupfeld
> --------------------------------
>
Browser only submit a name/value pair for a check checkbox, hence the
KeyError, however, zope has a facility (called marshaling) for
specifying a default value. Or you can use REQUEST.get to similiar
effect, like so:
<dtml-call
"_['meine_skizze'].propertysheets.Beschreibung.manage_changeProperties({
'Name':REQUEST.form['Name'],
'Email':REQUEST.form['Email'],
'Sprache':REQUEST.get('Sprache', ''),
...
BTW: You do not need to explicitly use REQUEST.form to access form
variables, (although you can if you *really* concerned about name
collisions), REQUEST.foo or REQUEST['foo'] work just as well.
You can accomplish something similar on the form side with:
<input type="checkbox" name="Sprache" value="checked value">
<input type="hidden" name="Sprache:default" value="unchecked value">
hth,
--
| Casey Duncan
| Kaivo, Inc.
| cduncan@kaivo.com
`------------------>