<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Pesquisando na internet,encontrei a errata do livro de onde tirei essa aplicação.<br>eis o link:<br>http://dev.catalystframework.org/wiki/thebookerrata<br>a errata:<br>In the code examples on pages 44, 45 and 49, "<code>$c->form</code>" should read
"<code>$self->formbuilder</code>" throughout, and the TT code should say "[% Form<!--defang_nop-->Builder.render %]" instead of "<code>[% form.render %]</code>".<br>eu confundi o método do contexto,form,com um método do $self,formbuilder.corrigindo isso,o problema foi resolvido.alterei também o $c->forward...pelo $c->req->redirect.o nome do método update_or_insert é bem sugestivo,entendi pra que ele funciona,não tava entendendo de onde ele vinha.mas lendo melhor o código entendi que ele vinha do $c->model que associei com o person.Não entendi porque o código "$form->model->update($person)" é mais adequado.<br><br>> Subject: Re: [Fortaleza] Código falho<br>> From: daniel@ruoso.com<br>> To: andreluismlima@hotmail.com<br>> CC: fortaleza@pm.org<br>> Date: Mon, 18 Jan 2010 09:31:08 -0300<br>> <br>> Em Seg, 2010-01-18 às 05:45 +0300, André Lima escreveu:<br>> > o método form,lógico,é referente ao FormBuilder.Cria-se a váriavel<br>> > $person e a associa com um Schema do banco de dados(o que fica<br>> > evindenciado aqui:my $person = $c->model('AddressDB::People').A<br>> > variável person é utilizada depois para associar as colunas do banco<br>> > de dados com os campos do form: <br>> <br>> Se você está usando o FormBuilder, tem um jeito mais adequado de definir<br>> os valores default do formulário e de atualizar o $person...<br>> <br>> O FormBuilder também implementa um tipo de MVC, então o jeito correto de<br>> fazer essas coisas é através do model do formulário...<br>> <br>> # pega os valores do model e atualiza um objeto.<br>> $form->model->update($person);<br>> <br>> # pega os valores do objeto e seta como default no model<br>> $form->model->default_values($person)<br>> unless $form->submitted;<br>> <br>> > ele guarda esses valores no bd($person->update_or_insert;...esse<br>> > método update_or_insert vem de onde,de que variável?)<br>> <br>> Recomendo você dar uma olhada no manual do DBIx::Class, voce vai<br>> entender pra que serve o update_or_insert assim como todos os outros<br>> métodos...<br>> <br>> > retorna-se uma mensagem de sucesso na página<br>> > list( $c->forward('list').<br>> <br>> O jeito mais interessante para fazer isso é usando o $c->req->redirect<br>> ao invés do $c->forward. A diferença é que você fazendo o redirect, faz<br>> com que o usuário possa fazer reload na página de resultado, evitando o<br>> re-submit da mesma informação por acidente...<br>> <br>> # mais informações em <br>> http://en.wikipedia.org/wiki/Post/Redirect/Get<br>> <br>> > do contrário,retorna-se a página edit.de qualquer forma,o problema<br>> > persiste e essa página edit não é carregada.<br>> <br>> O que acontece quando deveria aparecer a página edit? qual é o problema?<br>> <br>> daniel<br>> <br>                                            <br /><hr />Quer 25 GB de armazenamento gratuito na web? <a href='http://www.eutenhomaisnowindowslive.com.br/?utm_source=MSN_Hotmail&utm_medium=Tagline&utm_campaign=InfuseSocial' target='_new'>Conheça o Skydrive clicando aqui.</a></body>
</html>