NAME
Net::LDAP::HTMLWidget - Like FromForm but with Net::LDAP and HTML::Widget
SYNOPSIS
You'll need a working Net::LDAP setup and some knowledge of HTML::Widget and Catalyst. If you have no idea what I'm talking about, check the (sparse) docs of those modules.
package My::Controller::Pet; # Catalyst-style
# define the widget in a sub (DRY)
sub widget_pet {
my ($self,$c)=@_;
my $w=$c->widget('pet')->method('get');
$w->element('Textfield','name')->label('Name');
$w->element('Textfield','age')->label('Age');
...
return $w;
}
# this renders an edit form with values filled in from the DB
sub edit : Local {
my ($self,$c,$id)=@_;
# get the object
my $item=$c->model('LDAP')->search(uid=>$id);
$c->stash->{item}=$item;
# get the widget
my $w=$self->widget_pet($c);
$w->action($c->uri_for('do_edit/'.$id));
# fill widget with data from DB
Net::LDAP::HTMLWidget->fill_widget($item,$w);
}
sub do_edit : Local {
my ($self,$c,$id)=@_;
# get the object from DB
my $item=$c->model('LDAP')->search(uid=>$id);
$c->stash->{item}=$item;
$ get the widget
my $w=$self->widget_pet($c);
$w->action($c->uri_for('do_edit/'.$id));
# process the form parameters
my $result = $w->process($c->req);
$c->stash->{'result'}=$result;
# if there are no errors save the form values to the object
unless ($result->has_errors) {
Net::LDAP::HTMLWidget->populate_from_widget($item,$result);
$c->res->redirect('/users/pet/'.$id);
}
}
DESCRIPTION
Something like Class::DBI::FromForm / Class::DBI::FromCGI but using HTML::Widget for form creation and validation and Net::LDAP.
Methods
fill_widget $item, $widget
Fill the values of a widgets elements with the values of the LDAP object.
populate_from_widget $item, $results, $ldap_connection
Updates the $item with new values from $result and updated using $ldap_connection.
AUTHOR
Thomas Klausner, <domm@cpan.org>, http://domm.zsi.at Marcus Ramberg, <mramberg@cpan.org> Andreas Marienborg, <andremar@cpan.org>
LICENSE
This code is Copyright (c) 2003-2006 Thomas Klausner. All rights reserved.
You may use and distribute this module according to the same terms that Perl is distributed under.