[Catalyst] CRUD Question. How to update a record.

Will Smith willbelair at yahoo.com
Tue Feb 20 13:56:33 GMT 2007


you can use this to add value to a text field:
  my $e = $w->element('Textfield', 'itemid' )->label('ItemId')->value(...)->size(30);


Hans Ophüls <hop at shoppilot.de> wrote:
  
> But I have a problem with implementing an
> update function.
> It schould select a record from the database
> and insert the data into a widget.
> 
> sub hw_update : Local {
> my ($self, $c, $id) = @_;
> 
> # Search for the product 
> c->model('MyAppDB::Product')->search({id => $id});
> 
> # Create the widget and set the action for the form
> my $w = $self->make_product_widget($c);
> $w->action($c->uri_for('hw_create_do'));
> 
> ....
> 
> sub make_product_widget {
> my ($self, $c) = @_;
> 
> # Create an HTML::Widget to build the form
> my $w = $c->widget('product_form')->method('post');
> 
> # Create the form fields
> my $e = $w->element('Textfield', 'itemid' 
> )->label('ItemId')->size(30);
> $e->value('4711');
> 
> Just where there is '4711' should be the value from the 
> column 'itemid'.
> I have tried various expression with
> $c->model('MyAppDB::Product')...
> but I have not found the right way.

I have found a way to do it.

sub hw_update : Local {
my ($self, $c, $id) = @_;
$c->stash->{product} = $c->model('MyAppDB::Product')->search({id => $id});
# Create the widget and set the action for the form
my $w = $self->make_product_widget($c);
$w->action($c->uri_for('hw_create_do'));

....

sub make_product_widget {
my ($self, $c) = @_;

# Create an HTML::Widget to build the form
my $w = $c->widget('product_form')->method('post');

if (defined $c->stash->{product}) { # update

my $firstrecord = $c->stash->{product}->next;

# Create the form fields
my $e = $w->element('Textfield', 'itemid' )->label('ItemId')->size(30);
$e->value($firstrecord->itemid);
...
} else { # create
...

I don't now if this is best way to do it.
But I have now a widget, which can be used for update and create operation.

But something goes wrong with Umlaut i.e. üäö .
They are stored in the database as Unicode. 
Also all Pages are deliverd with utf-8 charset.

But in the update form those characters are not displayed
correctly (In the product list they are displayed correctly).
It seems to me that something goes wrong with my

$e->value($firstrecord->itemid);

Any ideas ?

Hans


_______________________________________________
List: Catalyst at lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/


 
---------------------------------
Need Mail bonding?
Go to the Yahoo! Mail Q&A for great tips from Yahoo! Answers users.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20070220/e2bd7cd6/attachment.htm


More information about the Catalyst mailing list