[html-formfu] model_stash + model_config with ComboBox element

Ascii King tech at swattermatter.com
Tue Jan 27 13:32:59 GMT 2009


What a wonderfully useful tip. Thank you. I didn't understand why I was 
told to put my Model in the stash as it seemed to make no difference. 
Now I do. This is much easier than the long, coded way. However, how can 
I specify which column I want to use in the table? My lookup table 
contains a few different columns and the Select element is populated 
using data from the wrong column. Is there some way to specify which one 
I want?

Jens Schwarz wrote:
> Hi,
>
> some weeks ago Carl gave me this useful hint (see below) for populating Select elements. Works fine with Select elements. Now I tried to adopt this for my ComboBox but failed (just think of the example below being a ComboBox instead of a Select): The result is that when I call the edit action in my Catalyst controller, the genre saved in the recordset is displayed in the genres_text part of the ComboBox - even if the genre would be available in genres_select.
>
> Do I have to handle ComboBoxes in another way than Selects to populate them?
>
>   
>> 2008/12/4 Jens Schwarz <blacky6767 at gmx.de>:
>>     
>>>    my @genreobj = $c->model('My::Genres')->all();
>>>    my @genres;
>>>    foreach my $g (@genreobj) {
>>>      push(@genres, [$g->id, $g->name]);
>>>    }
>>>    my $select = $form->get_element({name => 'genres'});
>>>    $select->options(\@genres);
>>>       
>> BTW, you could get rid of all that code to populate $select->options()
>> by making sure the appropriate Model is in your form stash, by setting
>> this in your cat application config:
>>
>>     'Controller::HTML::FormFu':
>>       model_stash:
>>         schema: My
>>
>> Then modifying the Select field in your form config:
>>
>>     type: Select
>>     name: genres
>>     model_config:
>>         resultset: Genres
>>
>> That will also have the benefit of populating the Select menu every
>> time the form's built - so if you add an AutoSet constraint to the
>> field, it'll check whether the user-submitted value was a valid
>> option, when you call $form->submitted_and_valid().
>>
>> Carl
>>     



More information about the HTML-FormFu mailing list