O problema era que a ação estava usando redirect e por isso perdia os
dados na passagem do script para o template. Alterei para traverse e
passou a funcionar.

Devo supor que nunca se depararam com isso, ou é um problema corriqueiro.

Bem, vamos ver quando o número de livros de Zope e Plone em Português
vai superar os de Java e de PHP. Aí vamos ver se a plataforma é boa
mesmo ou só depende de informações ocultas. Porque esse é o nível mais
baixo de segurança.

--- Em zope-pt@yahoogrupos.com.br, FLÁVIO GOMES DA SILVA LISBOA
<[EMAIL PROTECTED]> escreveu
>
> Olá. Acho que você não entendeu o problema. Tudo bem, vou repassar.
> 
> Pegando o seu exemplo, 
> 
> <div class="field"
>       tal:define="error errors/ano| nothing;
>                              ano request/ano | nothing;"
>                              tal:attributes="class
> 
> 
> No meu caso, o problema não é aqui, pois errors já vem como 'nothing'
> . Essa estrutura de tratamento para cada campo eu já implementei, pois
> como disse, eu segui um modelo que estava funcionando. O que ocorre é
> que o dicionário errors preenchido pelo Controller Validator não está
> chegando no Controller Page template. 
> 
> A manifestação do problema começa nesta linha:
> 
> <div metal:fill-slot="main"
>      tal:define="errors options/state/getErrors">
> 
> O template não está 'pegando' os 'errors'.
> 
> Deu pra entender?
> Obrigado pela atenção.
> 
> --- Em zope-pt@yahoogrupos.com.br, "Leonardo Miranda"
> <leonardo.mirandas@> escreveu
> >
> > Opa Flávio,
> > o seus campos devem possuir alguns valores basicos setado... vou da um
> > exemplo:
> > 
> >         <div class="field"
> >                 tal:define="error errors/ano| nothing;
> >                                    ano request/ano | nothing;"
> >                                    tal:attributes="class
> python:test(error,
> > 'field error', 'field')">
> > 
> >                 <label >Ano</label>
> > 
> >                 <span class="fieldRequired"
> > title="Required">(Obrigatório)</span>
> > 
> >                 <div class="formHelp">
> >                 preencha o Ano
> >                 </div>
> > 
> >                 <div tal:content="error">Validation error output</div>
> > 
> >                 <input name="ano"
> >                     id="ano"
> >                     type="text"
> >                     value="ano"
> >                     tabindex=""
> >                     tal:attributes="value ano;
> >                                              tabindex tabindex/next;"
> >                     >
> > 
> >             </div>
> > 
> > Se vc perceber ele começa setando duas variaveis erro e ano, sendo
> que ano
> > vai ser o nome do seu campo a ser validado.
> > 
> > Depois ele testa no tal:attributes se a variavel erro está
preenchida...
> > 
> > Para ele recuperar o valor, dentro do seu input tem a tag
> tal:attributes que
> > seta o valo do ano para o value do campo...
> > 
> > qualquer coisa estamos ai..
> > 
> > abraços!
> > 
> > Leonardo Miranda
> > 
> > 
> > 
> > Em 18/07/07, FLÁVIO GOMES DA SILVA LISBOA <flaviogomesdasilva@>
> > escreveu:
> > >
> > >   Tenho uma dupla Controller Page Template e Controller Validator,
> para
> > > um cadastro simples, com três campos.
> > >
> > > Faço somente os testes de preenchimento (if not campo:
> > > missing('campo')) e sigo a receitinha do Validator:
> > >
> > > if state.getErrors():
> > > state.setStatus('failure')
> > > state.set(portal_status_message='Por favor, corrija os erros
abaixo.')
> > >
> > > Pois, bem, quando eu deixo de preencher algum campo, o formulário me
> > > traz a mensagem acima na parte superior do formulário, mas não
traz a
> > > mensagem de erro específica do campo.
> > >
> > > Eu fiz o seguinte teste, mudei o state.set dessa forma:
> > >
> > > state.set(portal_status_message='Por favor, corrija os erros
> > > abaixo.'+str(state.getErrors()))
> > >
> > > Aí vi no template renderizado que o Validator estava gerando as
> > > mensagens para os campos (state.setError(campo,mensagem)). Certo.
> > > Em seguida, coloquei uma tag <p> no template para ser preenchida
> > > com o conteúdo de options/state/getErrors. Não trouxe nada!
> > > Não sei porque esse conteúdo está se perdendo.
> > > Também notei que o formulário não está recuperando o conteúdo dos
> > > campos, pois quando submeto e há erros, ele limpa os campos.
Imprimi o
> > > request/[nome do campo] para todo mundo e vi que não chega nada.
> > > O que pode estar causando essa perda de dados na requisição? O CPT
> > > envia os dados para o Validator, mas do Validator para o CPT parece
> > > que só chega o status de 'failure'.
> > > Essa dupla é uma cópia esculpida e encarnada de outro cadastro que
> > > a despeito de ter mais campos e ser mais elaborado, funciona
> > > perfeitamente. Reaproveitei tudo. Só que o funcionamento retrocedeu.
> > >
> > > Obrigado pela atenção.
> > >
> > >
> > >  
> > >
> >
>


Responder a