[html-formfu] Having issues with nested repeatable loading from
db.
Moritz Onken
onken at houseofdesign.de
Thu Mar 5 15:09:45 GMT 2009
Am 05.03.2009 um 15:40 schrieb Leanan Sidhe
<the.leanan.sidhe at gmail.com>:
>
>
> On Thu, Mar 5, 2009 at 8:46 AM, Ascii King <tech at swattermatter.com>
> wrote:
> For starters, I don't think it is supposed to be "schema = DB", just
> "schema DB"
>
>
> <Controller::HTML::FormFu>
> <model_stash>
> schema DB
> </model_stash>
> </Controller::HTML::FormFu>
>
> Also, could you show us the may_have line that sets up the 'debits'
> relationship?
>
> I meant might_have, not may_have, and here it is:
> In MyApp::DB::Result::Account :
>
> __PACKAGE__->might_have(
> 'debits' => 'MyApp::Schema::DB::Result::Debit',
> 'account_id'
> );
>
> Where both the Account and Debit Tables have an account_id field.
> It's definitely walking this relationship, because my form is
> loading the "something" and "something_else" values. It's just not
> going that extra step and loading all the related debit_items for
> that debit. In case you are curious, that is set up like so:
>
> in MyApp::DB::Result::Debit :
>
> __PACKAGE__->has_many(
> 'debit_items' => 'MyApp::Schema::DB::Result::DebitItems',
> 'debit_id'
> );
>
> Where both Debit and DebitItems table have a debit_id column. This
> is where it breaks. For my example, there is a row with debit_id 1
> in Debit, and 3 rows in DebitItems with a debit_id of 1 that should
> match up. Those three rows are not being loaded from the database.
> It's not even giving me 3 empty rows.
>
> Should DB in my myapp.conf be DB::Result, instead, since all my
> table files are MyApp::Schema::DB::Result::xxx? I've tried that,
> too, and it doesn't seem to make a difference.
>
> My controller has the following:
> sub testing :FormConfig('MyApp/myapp_base.yml') :PathPart('testing')
> Chained('/') Args(0) {
> my ($self, $c) = @_;
> my $form = $c->stash->{'form'};
>
> if ($form->submitted_and_valid) {
> $form->model->update([still trying to figure out what to put
> here but my first concern is getting loading working]);
> } else {
> $form->model->default_values($c->model('DB::Account')->find(1));
> }
> }
>
> Obviously I'll make it a bit more dynamic later on, but this is just
> for testing purposes with some dummy data in the db.
>
> Please let me know if there's anything else I can tell you that
> would make it easier for you to figure out (except of course the
> original code, since that's proprietary)
>
> Thanks.
>
>
>
>
>
>
> Leanan Sidhe wrote:
> I'm attempting to make use of the $form->model->default_values and
> $form->model->update methods. Everything except for my repeatables
> are loading from the db, and I am at a loss as to why this is. My
> guess is that either 1) What I want to do cannot currently be done,
> or 2) I'm missing something simple, but important. Here's an
> example of what I am trying to do:
>
>
> I have something along the following for my tables:
>
> MyApp::DB::Result::Account:
> - A may_have for MyApp::DB::Result::Debit, named debits
>
> MyApp::DB::Result::Debit
> - A belongs_to for MyApp::DB::Result::Account, named account
> - A has_many for MyApp::DB::Result::DebitItems, named debit_items
>
> MyApp::DB::Result::DebitItems
> - A belongs_to for MyApp::DB::Result::Debit, named debit
>
> myapp.conf has:
> name MyApp
> <Controller::HTML::FormFu>
> <model_stash>
> schema = DB
> </model_stash>
> </Controller::HTML::FormFu>
>
> (I'm not sure if that is right. I've tried MyApp::Model::DB, and
> MyApp::Schema::DB -- Model::DB lists the connection string,
> Schema::DB is the one with the load_namespaces)
>
> My form config has a base config file that loads a bunch of sub
> config files. In one of the sub configs where I'm trying to get
> this working I have something like this:
>
> ---
> elements:
> nested_name: debits
> elements:
> - type: Block
> tag: table
> .... (lots of stuff building out the headers, etc. Then I
> finally get to the rows)
> - type: Block
> tag: tbody
> elements:
> - type: Repeatable
> nested_name: debit_items
> elements:
> - type: Block
> ... (lots of stuff building out the row I want repeated)
>
>
>
> When I load the form, I do $form->model->default_values($c-
> >model('DB::Account')->find(1));
>
> The portion of the form that is not in the repeatable section loads
> fine. I'll have things like debits.something, debits.soemthing_else
> (where I have something and something_else columns in the debit
> table) All the data for those fields loads from the database just
> fine.
> The form builds out a table with one empty row, where the names are
> debits.debit_item.value, debits.debit_item.date, etc etc (where I
> have value and date columns in the debititems table). However, the
> fields aren't populated from the database.
>
> As far as I can tell I've got everything right, but obviously I
> don't because it just doesn't work. Is this possible, or am I
> dreaming? If it's possible, what am I messing up?
>
> Thank you!
> ---
> ---------------------------------------------------------------------
>
> _______________________________________________
> HTML-FormFu mailing list
> HTML-FormFu at lists.scsys.co.uk
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
>
> _______________________________________________
> HTML-FormFu mailing list
> HTML-FormFu at lists.scsys.co.uk
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
>
> _______________________________________________
> HTML-FormFu mailing list
> HTML-FormFu at lists.scsys.co.uk
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
You could write a test. Have a look at the formfu model dbic test
suite. This will help you. There are already many defined which you
can use.
If I recall correctly I had this problem too.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/html-formfu/attachments/20090305/24713896/attachment.htm
More information about the HTML-FormFu
mailing list