2008/8/24 Geoffrey D. Bennett <[EMAIL PROTECTED]>: > Hi there, > > I have a form like this: > > indicator: submit > elements: > - type: Text > name: name > label: Name > - type: Checkbox > name: active > label: Active > - type: Submit > name: submit > value: Submit > > which is intended for editing a row from a table like this: > > CREATE TABLE org_type ( > id INT PRIMARY KEY DEFAULT nextval('org_type_id_seq'), > name VARCHAR(80) NOT NULL UNIQUE > active BOOLEAN NOT NULL DEFAULT TRUE, > ); > > The problem is that the checkbox state wasn't being loaded correctly > from the database or being saved correctly back to it, although the > text field was fine. > > This is how I solved it: > > - type: Checkbox > name: active > label: Active > value: 1 > default_empty_value: 1 > inflator: Checkbox > > -----8<-----8<-----8<-----8<-----8<-----8<----- > package HTML::FormFu::Inflator::Checkbox; > > use strict; > use warnings; > use base 'HTML::FormFu::Inflator'; > use Class::C3; > > sub inflator { > my($self, $value) = @_; > > $value ? 1 : 0; > } > > 1; > -----8<-----8<-----8<-----8<-----8<-----8<----- > > All this seems a bit excessive for what I would have thought would be > a reasonably common case? > > I've now got: > > default_args: > elements: > Checkbox: > value: 1 > default_empty_value: 1 > inflator: Checkbox > > But don't those seem like reasonable defaults anyway?
You should always be setting 'value' for checkboxes - so that the browser knows what to send if the checkbox is checked. How are you updating the database? HTML-FormFu-Model-DBIC handles checkboxes correctly, without needing 'default_empty_value'. If you're using hand-rolled code to update the database - be aware that the browser doesn't send anything back for unchecked checkboxes - not even an empty value - so either your db-update code will need to check the FormFu form object for checkboxes that haven't been submitted, or you'll need to use 'default_empty_value'. Carl _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu