So I think I'm pretty close to what I'm heading for. Here's what I'm doing:
my $field_EmailDL = $form_insert_data->get_field( { name => 'EmailDL'} ); $field_EmailDL->options($emailDL_array); $emailDL_array contains the following: $VAR1 = [ [ 'label', 'mylabel1', 'value', 'myvalue1' ], [ 'label', 'mylabel2', 'value', 'myvalue2' ] ]; Now I realize that setting ->options() will essentially overwrite the value of the 'EmailDL'. That's fine, I fix that up later. What I'm trying to do now ( haven't found it in the docs ) is the way to set one or more of the values in $emailDL_array to be selected. The docs say: "Its arguments must be an array-ref of items. Each item may be an array ref of the form [ $value, $label ] or a hash-ref of the form { value => $value, label => $label }. Each hash-ref may also have an attributes key." Can "selected" be one of those attributes? How would I specify it? Based on the above, I've tried the following which doesn't work: { value => $value, label => $label, attributes => {selected => 'selected'} } Should I be looking at another function altogether for setting 'selected' items? Thanks again, -Bobby On Mon, Nov 7, 2011 at 1:18 PM, J. Bobby Lopez <j...@jbldata.com> wrote: > Thanks very much for this Carl, your insight pointed me in the right > direction. It seems there are some caveats in the way I've been > reading CGI vars which affect multi-valued parameters. > > From http://perldoc.perl.org/CGI.html > -- > When using this, the thing you must watch out for are multivalued CGI > parameters. Because a hash cannot distinguish between scalar and list > context, multivalued parameters will be returned as a packed string, > separated by the "\0" (null) character. You must split this packed > string in order to get at the individual values. This is the > convention introduced long ago by Steve Brenner in his cgi-lib.pl > module for Perl version 4. > -- > > So it may in fact be possible to use $form_input to populate a formfu > object with multi-valued parameters, as long as the packed string with > "\0" dealt with. > > Still, I may just do it they way you've suggested in order to keep > things clear and obvious. > > -Bobby > > > On Sat, Nov 5, 2011 at 6:35 PM, Carl Franks <fireart...@gmail.com> wrote: >> On 4 November 2011 19:24, J. Bobby Lopez <j...@jbldata.com> wrote: >>> I also see that when I dump %cgivars after submitting a form with >>> multiple values selected in a 'select' element, that the values become >>> concatenated. >>> >>> E.g (FormFu yml): >>> >>> - type: Select >>> name: EmailDL >>> label: 'Subscribed Lists:' >>> options: >>> - [ 'male', 'Male' ] >>> - [ 'female', 'Female' ] >>> >>> >>> And resulting params (%cgivars): >>> { >>> ..., >>> 'EmailDL' => 'malefemale', >>> ..., >>> } >>> >>> >>> So I'm not sure how FormFu would deal with multi-valued selects in general? >> >> Hi, >> I've just committed test files checking that multi-value selects work. >> Setting default with $field->default(\@values), and submitting multiple >> values: >> https://github.com/fireartist/HTML-FormFu/blob/master/t/elements/select_multi_value.t >> Setting default with $form->default_values({ name => \@values }); >> https://github.com/fireartist/HTML-FormFu/blob/master/t/elements/select_multi_default_values.t >> Everything seems to work as expected. >> >> I'm not sure where your %cgivars comes from - and whether you're using >> CGI, CGI::Simple or Catalyst? >> >> Carl >> >> _______________________________________________ >> HTML-FormFu mailing list >> HTML-FormFu@lists.scsys.co.uk >> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu >> > _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu