On 24 September 2012 15:06, <sc...@simpzoid.com> wrote: >> On 24 September 2012 11:22, <sc...@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@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
I'm a bit stumped by this - I've just checked an app I'm working on just now, and it does exactly what you're wanting it to do. I checked the code for create(), and it effectively just does: $row= new_result({}); update($row); - which is what you're doing manually. Can you send your form config and DBIC resultset class files for Author and Address? Carl _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu