[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