2008/6/3 illidam <[EMAIL PROTECTED]>:
> Meu primeiro post aqui, tipo dei uma olhada não vi ninguem com esse
> problema aqui no grupo então vai ai o problema pra quem pduer me ajudar.
> Eu criei um formulario no ploneFormGen certinho e tudo mais...criei
> zSqlMethod q insere os dados do formulario na banco e tb criei um
> script que tb esta funcionando corretamente inserindo no banco..o
> problema é que quando clico em enviar no formulario, aparece o
> seguinte erro...
>
> TypeError: pegar_do_formulario() takes exactly 4 arguments (0 given)
> (Also, the following error occurred while attempting to render the
> standard error message, please see the event log for full details:
> name 'plone_context_state' is not defined)
>
> tipo eu entendi +- o erro, fala q o pegar formulario tem 4 parametros
> e ele nao esta recendo nenhum ou 0, e ai oq faço!?
> vo postar o meu pegar pegar parametro pra casa tenha algo
> errado...alguem me falar...
> segue o pegar_formulario:
>

Eu nunca usei o PloneFormGen, mas evidentemente o problema está em
como você está chamando o script. Se fosse um formulário normal,
bastaria colocar a URL do script no actio do form, assim: <FORM
ACTION="pegar_do_formulario">

> o parameters list dele é:
> cliente,checador,numerodaproposta,valordaproposta

OK, esta parte está certa. Com esta lista de parâmetros, o Zope busca
automaticamente os dados no request, não precisa fazer manualmente
como você faz.

>
> e depois vem o codigo:
>

Vou comentar trecho por trecho.

O trecho abaixo é absolutamente desnecessário, porque como eu disse o
Zope busca os parâmetros do script no request automaticamente.

> # Pega as variáveis do Ambiente
> ################################################
> request = container.REQUEST
> RESPONSE =  request.RESPONSE
>
> ################################################
> # Recebe os valores da Pagina
> ################################################
> cliente = request.get('cliente')
> checador = request.get('checador')
> numerodaproposta = request.get('numerodaproposta')
> valordaproposta = request.get('valordaproposta')

Bastaria o trecho abaixo:

>
> ################################################
> # Insere as informações no banco
> ################################################
>
> context.insereir_banco(cliente=cliente,checador=checador,
> numero_da_proposta=numerodaproposta,
> valor_da_proposta=valordaproposta)
>
> return "Adicionado com sucesso!"

Normalmente você não vai querer retornar uma string, e sim uma página.
Um jeito de fazer isso é assim:

return context.pagina_de_resposta()

Onde pagina_de_resposta é o nome de um template.

Infelizmente eu nao conheco o PloneFormGen então não posso ser mais
específico, mas tudo o que eu disse aí em cima funciona para
formulários normais no Zope.

[ ]s
Luciano

Responder a