<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-&gt;form</code>" should read
"<code>$self-&gt;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-&gt;forward...pelo $c-&gt;req-&gt;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-&gt;model que associei com o person.Não entendi porque o código "$form-&gt;model-&gt;update($person)" é mais adequado.<br><br>&gt; Subject: Re: [Fortaleza] Código falho<br>&gt; From: daniel@ruoso.com<br>&gt; To: andreluismlima@hotmail.com<br>&gt; CC: fortaleza@pm.org<br>&gt; Date: Mon, 18 Jan 2010 09:31:08 -0300<br>&gt; <br>&gt; Em Seg, 2010-01-18 às 05:45 +0300, André Lima escreveu:<br>&gt; &gt; o método form,lógico,é referente ao FormBuilder.Cria-se a váriavel<br>&gt; &gt; $person e a associa com um Schema do banco de dados(o que fica<br>&gt; &gt; evindenciado aqui:my $person = $c-&gt;model('AddressDB::People').A<br>&gt; &gt; variável person é utilizada depois para associar as colunas do banco<br>&gt; &gt; de dados com os campos do form: <br>&gt; <br>&gt; Se você está usando o FormBuilder, tem um jeito mais adequado de definir<br>&gt; os valores default do formulário e de atualizar o $person...<br>&gt; <br>&gt; O FormBuilder também implementa um tipo de MVC, então o jeito correto de<br>&gt; fazer essas coisas é através do model do formulário...<br>&gt; <br>&gt;    # pega os valores do model e atualiza um objeto.<br>&gt;    $form-&gt;model-&gt;update($person);<br>&gt; <br>&gt;    # pega os valores do objeto e seta como default no model<br>&gt;    $form-&gt;model-&gt;default_values($person)<br>&gt;     unless $form-&gt;submitted;<br>&gt; <br>&gt; &gt; ele guarda esses valores no bd($person-&gt;update_or_insert;...esse<br>&gt; &gt; método update_or_insert vem de onde,de que variável?)<br>&gt; <br>&gt; Recomendo você dar uma olhada no manual do DBIx::Class, voce vai<br>&gt; entender pra que serve o update_or_insert assim como todos os outros<br>&gt; métodos...<br>&gt; <br>&gt; &gt; retorna-se uma mensagem de sucesso na página<br>&gt; &gt; list( $c-&gt;forward('list').<br>&gt; <br>&gt; O jeito mais interessante para fazer isso é usando o $c-&gt;req-&gt;redirect<br>&gt; ao invés do $c-&gt;forward. A diferença é que você fazendo o redirect, faz<br>&gt; com que o usuário possa fazer reload na página de resultado, evitando o<br>&gt; re-submit da mesma informação por acidente...<br>&gt; <br>&gt;   # mais informações em <br>&gt;   http://en.wikipedia.org/wiki/Post/Redirect/Get<br>&gt; <br>&gt; &gt; do contrário,retorna-se a página edit.de qualquer forma,o problema<br>&gt; &gt; persiste e essa página edit não é carregada.<br>&gt; <br>&gt; O que acontece quando deveria aparecer a página edit? qual é o problema?<br>&gt; <br>&gt; daniel<br>&gt; <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>