Vamos criar um formulário que inclua dados dentro de um
banco de dados. Para tal, adicione um novo page template.
Acesse o ZMI e clique em Page Templates:
E coloque os dados:
Vamos adicionar o seguinte código nele:
<html metal:use-macro="here/main_template/macros/master">
<head>
<title tal:content="template/title">The title</title>
</head>
<body> <div metal:fill-slot="main">
<FORM action="." method=post>
<h1>Coloque as informações do Usuário a ser cadastrado</h1><br>
<TABLE>
<TBODY>
<TR>
<TH>Nome</TH>
<TD><INPUT name=Usuario width="50" value=""></TD>
</TR>
<TR>
<TH>Unidade</TH>
<TD><INPUT name=Unidade width="50" value=""></TD>
</TR>
<TR>
<TH>Ramal</TH>
<TD><INPUT name=Ramal width="30" value=""></TD>
</TR>
<TR>
<TH>Radio</TH>
<TD><INPUT name=Radio width="30" value=""></TD>
</TR>
<TR>
<TH>Celular</TH>
<TD><INPUT name=Celular width="30" value=""></TD>
</TR>
<TR>
<TH>Email</TH>
<TD><INPUT name=Email width="50" value=""></TD>
</TR>
<TR>
<TH></TH>
<TD><INPUT type=submit value="inserir" name="py_inclui:method"></TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</div></body>
</html>
Depois de Salvar, clique em Test e visualize page template.
Depois de criado o formulário, é necessário que nós criarmos um Z SQL Method para incluir os dados na base.
Acesse o ZMI e Crie um Z SQL Method:
Com os dados:
Clique em Add.
Agora que criamos a query SQL, vamos criar o script Python, que será o responsável pela inclusão dos dados no banco.
Acesse o ZMI e adicione um Script (Python):
Coloque o nome de py_inclui:
Clique em Add and Edit.
Você terá acesso a um novo script:
Vamos modificar esse conteúdo por outro. Veja:
# Pega as variáveis do Ambiente
################################################
request = container.REQUEST
RESPONSE = request.RESPONSE
################################################
# Recebe os valores da Pagina
################################################
usuario = request.get('Usuario')
unidade = request.get('Unidade')
ramal = request.get('Ramal')
radio = request.get('Radio')
celular = request.get('Celular')
email = request.get('Email')
################################################
# Insere as informações no banco
################################################
context.zsql_insert(Usuario=usuario,Unidade=unidade,Ramal=ramal,
Radio=radio,Celular=celular,Email=email)
return "OK"
A lista do parâmetros é: Usuario, Unidade, Ramal, Radio, Celular, Email.
Para testar o script, clique em test:
Coloque os valores nas variáveis e clique em Run Script. Se não retornar nenhum erro e a tela mostrar OK, o script esta funcionando. Então vamos testar o nosso formulário. Acesse o formulario_inclusao e clique em test:
Digite as informações e clique em inserir.
OK
Você deverá ver uma mensagem como esta acima, informando que
a inclusão foi feita com sucesso. Use o formulario_pesquisa e
veja os dados que você incluiu estão disponíveis.
Porém, o nosso OK esta totalmente fora do skin do Plone.
Vamos criar uma página para mostrar que a inclusão foi feita com sucesso. Adicione um novo page template:
Com os seguintes dados:
Clique em Add and Edit. Coloque o seguinte código:
<html metal:use-macro="here/main_template/macros/master">
<head>
<title tal:content="template/title">The title</title>
</head>
<body>
<div metal:fill-slot="main">
<h3><span tal:replace="options/mensagem | default"></span></h3>
</div>
</body>
</html>
Vamos analisar esse código. O que temos de novidade aqui é o seguinte código:
<h3><span tal:replace="options/mensagem | default"></span></h3>
Definimos esta área para que o nosso script, possa retornar um valor para ele. Vamos modificar o script py_insere:
# Pega as variáveis do Ambiente
################################################
request = container.REQUEST
RESPONSE = request.RESPONSE
################################################
# Recebe os valores da Pagina
################################################
usuario = request.get('Usuario')
unidade = request.get('Unidade')
ramal = request.get('Ramal')
radio = request.get('Radio')
celular = request.get('Celular')
email = request.get('Email')
################################################
# Insere as informações no banco
################################################
context.zsql_insert(Usuario=usuario,Unidade=unidade,Ramal=ramal,
Radio=radio,Celular=celular,Email=email)
#################################################
# Retorna para o template as informações
#################################################
mensagem = "Usuário Cadastrado com sucesso!"
return context.resposta(mensagem=mensagem)
Como podemos visualizar, a parte que está em negrito é a parte modificada do código. O código return context.resposta(mensagem=mensagem) diz ao Zope para retornar a página resposta e no campo mensagem colocar o valor da variável mensagem. Ao testarmos novamente o nosso formulario_inclusao não teremos mais o OK e sim a seguinte tela: