[Catalyst] Needs some help with select and Controller::FormBuilder
Alex Povolotsky
tarkhil at over.ru
Tue Feb 26 14:36:58 GMT 2008
Hello!
I'm trying to make a form with select using Controller::FormBuilder.
Code is quite straightforward
=== edit.fb ===
name: server_edit
method: post
fields:
name:
label: Server Name
required: 1
type: text
size: 60
descr:
label: Description
type: textarea
rows: 4
cols: 60
ipid:
label: IP
type: select
required: 1
=== edit.fb ===
=== from Server.pm ===
sub edit : Local Form {
my ($self, $c, $lid, $sid) = @_;
if (!defined $lid) {
$c->response->redirect($c->uri_for('/location/list'));
$c->detach();
}
my $form = $self->formbuilder;
my $iplist = $c->model('OurIP')->search(undef,
{columns =>
[qw /ipid ipaddr/],
order_by => 'ipaddr'});
$c->log->info(join(', ', map { $_->ipid.' '.$_->ipaddr } $iplist->all));
$form->field(name=>'ipid',
type => 'select',
options =>
[ map { [ $_->ipid, $_->ipaddr] } $iplist->all ],
# other => 1, # create "Other:"
box
);
# No processing yet
}
=== from Server.pm ===
Looks OK, doesn't it?
Debug shows
[CGI::FormBuilder::Field::select::tag] (debug2) ipid: generating select
input type
[CGI::FormBuilder::Field::tag_value] (debug2) ipid: called $field->tag_value
[CGI::FormBuilder::Field::tag_value] (debug2) ipid: sticky && ! force
[CGI::FormBuilder::Field::cgi_value] (debug2) ipid: called $field->cgi_value
[CGI::FormBuilder::Field::tag_value] (debug2) no cgi found, returning
def_value
[CGI::FormBuilder::Field::def_value] (debug2) ipid: called $field->def_value
[CGI::FormBuilder::Field::def_value] (debug2) ipid: def value = ()
[CGI::FormBuilder::Field::inflate_value] (debug2) ipid: called
$field->inflate_value
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94cfd54))
= (,-select-,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b27fc))
= (1,88.212.221.66,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94335cc))
= (23,88.212.221.67,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2b68))
= (24,88.212.221.68,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2bb0))
= (26,88.212.221.69,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94a3eec))
= (31,88.212.221.71,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94a3f04))
= (28,88.212.221.72,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94a3fc4))
= (27,88.212.221.73,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2010))
= (30,88.212.221.74,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2070))
= (2,88.212.221.75,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2088))
= (29,88.212.221.76,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2100))
= (3,88.212.221.77,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b213c))
= (4,88.212.221.78,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94334f4))
= (5,88.212.221.79,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2160))
= (17,88.212.221.81,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b21b4))
= (6,88.212.221.82,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b22b0))
= (10,88.212.221.83,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b22e0))
= (11,88.212.221.84,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b22f8))
= (12,88.212.221.85,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b231c))
= (13,88.212.221.86,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b279c))
= (7,88.212.221.88,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2ab4))
= (8,88.212.221.89,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94a367c))
= (25,88.212.221.90,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b25a4))
= (21,88.212.221.92,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b25e0))
= (14,88.212.221.93,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2040))
= (16,88.212.221.94,)
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x94b2358))
= (9,88.212.221.95,)
[CGI::FormBuilder::Field::select::tag] (debug2) ipid: generated tag =
<select id="ipid" name="ipid">
<option value="">-select-</option>
<option value="1">88.212.221.66</option>
<option value="23">88.212.221.67</option>
<option value="24">88.212.221.68</option>
<option value="26">88.212.221.69</option>
<option value="31">88.212.221.71</option>
<option value="28">88.212.221.72</option>
<option value="27">88.212.221.73</option>
<option value="30">88.212.221.74</option>
<option value="2">88.212.221.75</option>
<option value="29">88.212.221.76</option>
<option value="3">88.212.221.77</option>
<option value="4">88.212.221.78</option>
<option value="5">88.212.221.79</option>
<option value="17">88.212.221.81</option>
<option value="6">88.212.221.82</option>
<option value="10">88.212.221.83</option>
<option value="11">88.212.221.84</option>
<option value="12">88.212.221.85</option>
<option value="13">88.212.221.86</option>
<option value="7">88.212.221.88</option>
<option value="8">88.212.221.89</option>
<option value="25">88.212.221.90</option>
<option value="21">88.212.221.92</option>
<option value="14">88.212.221.93</option>
<option value="16">88.212.221.94</option>
<option value="9">88.212.221.95</option>
</select>
[CGI::FormBuilder::Field::type] (debug2) ipid: called $field->type
(manual = 'select')
[CGI::FormBuilder::prepare] (debug2) $tmplvar{jshead} = $self->script
[CGI::FormBuilder::field] (debug2) called $form->field()
...
but later
[CGI::FormBuilder::Field::inflate_value] (debug2) ipid: called
$field->inflate_value
[FormBuilder] Warning: ipid: No options specified for 'select' field at
/usr/local/lib/perl5/site_perl/5.8.8/CGI/FormBuilder.pm line 1332
[CGI::FormBuilder::Field::select::tag] (debug2) optval(ARRAY(0x95bd838))
= (,-select-,)
[CGI::FormBuilder::Field::select::tag] (debug2) ipid: generated tag =
<select id="ipid" name="ipid">
<option value="">-select-</option>
</select>
[CGI::FormBuilder::Field::type] (debug2) ipid: called $field->type
(manual = 'select')
and, indeed, no IP address is available with select.
What could be wrong?
Alex.
More information about the Catalyst
mailing list