[html-formfu] labels from DBIC?
Josef Chladek
josef.chladek at gmail.com
Tue Jul 8 12:13:55 BST 2008
Am 07.07.2008 um 16:48 schrieb Carl Franks:
> 2008/7/6 Josef Chladek <josef.chladek at gmail.com>:
>> hello list,
>>
>> is there a way to have formfu make dynamic labels, aka labels from a
>> dbic-row?
>
> okay, I've added support for this in the subversion repository.
>
> You can now add a 'label' model_config to any field or multi block,
> like so:
> type: Multi
> model_config:
> label: 'label-col'
>
> At the moment, if there's a relationship of the same name, it'll call
> $row->get_column($label) - otherwise it does $row->$label.
>
> This means it supports non-column accessors, but it also means that
> the column must be on the particular row that's being processed.
> (ie, you can't do 'table.col' to reference another table)
> Can anyone think of a sensible way to handle that?
>
> Thanks for the good idea.
carl, that's great! but I have a few problems getting the (label)data
back to the form.
as I wrote before I have the following schemas:
__PACKAGE__->table('Matrix.Zeugnis');
__PACKAGE__->add_columns(qw/id user company companyname note/);
__PACKAGE__->utf8_columns(qw/companyname/);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->might_have(company =>
'Xatalyst::Schema::Matrix::MatrixCompanies');
__PACKAGE__->table('Matrix.ZeugnisUser');
__PACKAGE__->add_columns(qw/id vorname nachname description email pic
country/);
__PACKAGE__->utf8_columns(qw/vorname nachname description/);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many(zeugnisnoten =>
'Xatalyst::Schema::Matrix::Zeugnis', 'user');
__PACKAGE__->table('Matrix.Companies');
__PACKAGE__->add_columns(qw/id short_name long_name ... /);
__PACKAGE__->utf8_columns(qw/long_name/);
__PACKAGE__->set_primary_key('id');
I am able to get the companyname by using
- type: Repeatable
nested_name: zeugnisnoten
counter_name: count
elements:
- type: Hidden
name: id
- type: Multi
model_config:
label: companyname
but I have to eval line 243
eval{$block->label( $dbic->$label );};
otherwise I get an error (I have 4 has_many rows, but it happens that
it enters row 243 after getting the four rows successfully with
"companyname" as label, which throws)
Caught exception in Cat::Controller::Zeugnis->get "Can't locate object
method "company" via package "Cat::Model::Matrix::ZeugnisUser" at /
Users/josef/perl5.10.0/lib/site_perl/5.10.0/HTML/FormFu/Model/DBIC.pm
line 243."
because companyname is defined in Zeugnis but not ZeugnisUser
I can't find the reason, why the label would be generated n+1 times,
so is the eval ok (nothing's missing in the form)...
and it would be fine to write company.long_name so I could use the
might_have accessor, but I don't know how to change the code without
disturbing the "normal" way...
thanks
josef
More information about the HTML-FormFu
mailing list