#!/usr/bin/perl use strict; use warnings; use ODB; ODB::load('mysq:bleh'); my $person = ODB::Person->search; $person->name->like('%blah%'); $person->name->gt(3); $person->name->sort('desc'); ### or $person ->fname->like('%blah%') ->gt('3') ->sort('desc') ->lname->like('%jones%') ->gt('7') ->sort; while($person->next) { $name = $person->name; # Get the name $person->name($name . 'meister'); # Set the name print $person->name; # print plaintext version of person's name print $person->name->html_textinput; # HTML field print $person->name->html_dropdown; # HTML input+select print $person->name->html_dropdown( ODB->Person->search(fields => ['name'], distinct => 1) ); # HTML input+select, options from all possible names print $person->name->html_fieldauto; # Guess HTML field by datatype print $person->render(); # print out the person in NULL context print $person->render([qw(form)]); # render in context of a form print $person->render([qw(form list)]); # render in list-form view } $style = { '*' => { type => 'html', }, 'form *' => { display => 'form', }, 'form list *' => { display => 'formlist', }, }; # Inside of Item sub render { my ($self, $context) = @_; my $attr = $self->get_attr($context); if($attr->{display} eq 'html') { # ... display html stuff } else { return $self->SUPER::render($context); # Just do the default } } # Default renderer sub render { my ($self, $context) = @_; # OK, well lets do plain text print "Table: " . $self->tablename . "\n"; foreach $col ($self->cols) { print "\t$col: " . $self->$col . "\n"; } }