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