[html-formfu] Having issues with nested repeatable loading from
db.
Moritz Onken
onken at houseofdesign.de
Thu Mar 5 21:12:42 GMT 2009
I think we can help ypu best if you provide a test which fails and
shows what you are doing.
otherwise we cannot help you if cannot provide us with your source code.
moritz
Am 05.03.2009 um 17:59 schrieb Leanan Sidhe:
> The only one that seems to be what I want is the
> many_to_many_repeatable_nested tests.
>
> I notice in there, the call to $form->model->default_values has an
> extra parameter, a hash ref of { nested_base => 'foo' }.
>
> I tried adding {nested_base => 'debits'} to mine, and the end result
> was that now instead of at least getting all the data in my form
> from the various might_haves, I get nothing. The sql output also
> shows that it is not querying all the related tables at the first
> level, as it does when I do not have that hash ref. If that is the
> way to do it, then I am lost for two reasons:
>
> 1) I didn't even get at least my debits.debit_item.date, etc data
> loaded from the database, and all the data I WAS getting now isn't
> being loaded.
> 2) I have a bunch of tables that have relationships like this one
> (for instance, I have a credit and credititem table, with similar
> relationships as the debit and debititem tables as set out below).
> I need to load data from all those as well.
> 3) I don't recall, in my reading of the docs, tests, mailing list
> archives (I have skimmed all that are listed online, and read
> through anything that seemed REMOTELY related to repeatables and
> loading from the db), nor been able to google anything that even
> mentions this hash ref. All I've been able to come up with tells me
> that all I need to do is set up my schema, set up the proper
> relationships, make sure my field name's match the column name for
> the table I wish to load from, and make sure that my nested_names
> all match the relationship names. Which they do.
>
> I'm at a loss here. I do not come here asking for help without
> already haveing tried everything I can as I understand it. I have
> spent days trying to figure out what I am doing wrong.
>
> Is it my relationship type? Should this be a many_to_many instead
> of a has_many? Basically, an account may or may not have any
> debits. If they do, there will be an entry in the debits table that
> has some basic information about the whole set of debits, and then
> there may or may not be a bunch of individual debits, each in the
> debititems table, that will list information about the individual
> debit. I know it doesn't quite make sense to say in this example
> that you may have a row in the debits table without any in the
> debititems table, but in my application (which is not dealing with
> accounts, debits, etc) it makes sense. I may_have a debit, and that
> debit may have 0-x individual items associated with it. This was
> the first example I could come with that demonstrated something
> similar to my situation, and I didn't want to use foo and bar
> because people tend to get confused when you're using such nebulous
> terms.
>
> On my form, I want to show the overall data for the set of debits,
> and then display a table that lists all the individual debit items
> for that set of debits. This data is editable, so I need to load it
> all from the db.
>
> Put it this way: I am standing in front of a gorge, and I need to
> get across. I have the materials to make a bridge, but I do not
> know how to make a bridge. Everything that tells me how to make a
> bridge, when I try to use it to make a bridge, ends up with a bridge
> that doesn't span the gorge. I am missing some fine detail on
> bridge making that I need someone to point out to me so that I can
> do it. Telling me to look at all the instructions again is not of
> any help, since I'm obviously having problems understanding the
> instructions clearly enough to make said bridge.
>
> On Thu, Mar 5, 2009 at 10:09 AM, Moritz Onken
> <onken at houseofdesign.de> wrote:
>
>
> 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.
>
> _______________________________________________
> 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
More information about the HTML-FormFu
mailing list