[html-formfu] Having issues with nested repeatable loading from db.

Leanan Sidhe the.leanan.sidhe at gmail.com
Thu Mar 5 14:40:14 GMT 2009


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 =3D 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' =3D> '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' =3D> '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) =3D @_;
  my $form =3D $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 =3D 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 f=
or
>> 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 v=
alue
>> 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 i=
t'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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/html-formfu/attachments/20090305/e4=
05c476/attachment-0001.htm


More information about the HTML-FormFu mailing list