[html-formfu] Creating & Editing Records in a Related Table

scott at simpzoid.com scott at simpzoid.com
Mon Sep 24 14:06:09 GMT 2012


> On 24 September 2012 11:22,  <scott at simpzoid.com> wrote:
>> Dear All,
>>
>> I have been the following 2 methods in a controller:
>>
>> sub create :Chained('base') :PathPart('create')
>> :FormConfig('author/edit.conf') {
>>         my ( $self, $c ) = @_;
>>
>>         my $form = $c->stash->{form};
>>         $form->stash( schema => $c->stash->{schema} );
>>
>>         if ( $form->submitted_and_valid ) {
>>
>>              my $author =
>> $form->stash->{schema}->resultset('Author')->new_result({});
>>              $form->model->update($author);
>>              $c->response->redirect( $c->uri_for(
>> $self->action_for('list')) );
>>         }
>>         $c->stash(template => 'author/formfu_create.tt2');
>> }
>>
>> sub edit :Chained('object') :PathPart('edit') :Args(0)
>>         :FormConfig('author/edit.conf') {
>>         my ( $self, $c, $id ) = @_;
>>
>>         my $form = $c->stash->{form};
>>
>>         if ( $form->submitted_and_valid ) {
>>                 $form->model->update($c->stash->{rs});
>>                 $c->response->redirect( $c->uri_for(
>> $self->action_for('list')) );
>>         } else {
>>                 $form->model->default_values($c->stash->{rs});
>>         }
>>         $c->stash(template => 'author/formfu_create.tt2');
>> }
>>
>> The methods give the following results:
>>
>> Edit gives
>> SELECT me.id, me.name FROM author me WHERE ( me.id = ? ): '1'
>> UPDATE author SET name = ? WHERE ( id = ? ): 'scott', '1'
>> SELECT me.id, me.address, me.author_id FROM address me WHERE ( ( me.id =
>> ?
>> AND me.author_id = ? ) ): '1', '1'
>> UPDATE address SET address = ? WHERE ( id = ? ): '13 thriplee road', '1'
>>
>> Create Gives
>> INSERT INTO author ( name) VALUES ( ? ): 'Marge'
>>
>> ...and finally the question.  Why does the create method not do an
>> insert
>> into the address table and what do I have have to do to persuade the
>> create method to do said insert?
>
> I haven't checked the Model::DBIC code, but I suspect it's because the
> author row doesn't exist at the time it would be creating the related
> rows.
>
> Try adding
>     $author->insert;
> before your
>     $form->model->update($author);
>
> Carl
>
> _______________________________________________
> HTML-FormFu mailing list
> HTML-FormFu at lists.scsys.co.uk
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
>
This time create gives:

INSERT INTO author () VALUES ():
UPDATE author SET name = ? WHERE ( id = ? ): 'simp', '15'

Still nothing for the address table




More information about the HTML-FormFu mailing list