Ir para o conteúdo

- - - - -

Formulário de contato utilizando Zend_Form


Criado por Matias Rezende, Set 30 2010 21:43

1 resposta neste tópico
  • Por favor, faça o login para responder

#1 Matias Rezende

Matias Rezende
  • Matias Rezende
  • Consultor Web
  • 55 Revisões
  • LocalizaçãoSão José - SC

Revisou 30 setembro 2010 - 21:43

Fala galera

Segue abaixo um código para criação de formulário de contato, utilizando Zend_Form.

/application/views/scripts/layout.phtml


/application/views/scripts/contato/index.phtml


/application/views/scripts/contato/contato.phtml


/application/views/scripts/contato/sucesso.phtml


/application/controllers/ContatoController.php


Pronto. Com este código, o formulário já estará realizando todas as validações necessárias e totalmente funcional.

Espero que seja util.

Carlos Eduardo
"Porque Deus amou o mundo de tal maneira que deu o seu Filho unigênito, para que todo aquele que nele crê não pereça, mas tenha a vida eterna." João 3:16
---------------------------------------------
Atualize seu navegador - http://imasters.uol....sbrowser/pt-br/
Twitter - @matiasrezende
Portfólio Online - http://matiasrezende.com.br

#2 Tiarê Balbi

Tiarê Balbi
  • Tiarê Balbi
  • Colaborador
  • 5 Revisões

Revisou 05 maro 2012 - 15:28

/application/controllers/ContatoController.php
<?php
/**
 * Controller para envio de formulário de contato.
 * 
 * @author Matias Rezende Consultor Web - www.matiasrezende.com.br
 * @version 1.0
 * @since 2010-09-30
 * @license CC GPL - http://creativecommons.org/licenses/GPL/2.0/legalcode.pt
 */
class ContatoController extends Zend_Controller_Action {
        public function init() {
                // inserindo o título deste controller, que será adicionado ao título que já está colocado no layout 
                $this->view->headTitle ()->append ( 'Contato' );
        }
        
        public function indexAction() {
                // recuperando o formulário
                $formulario = new Application_Form_Contato();
                // verificando se o formulário foi enviado
                if ($this->_request->isPost ()) {
                        // verificando se o formulário é válido
                        if ($formulario->isValid ( $this->_request->getPost () )) {
                                // passando os valores do formulário para a view
                                $this->view->cliente = $formulario->getValues ();
                                // dados do email
                                $mail = new Zend_Mail ( 'UTF-8' );
                                // definindo o corpo do email
                                $mail->setBodyHtml ( $this->view->render ( 'contato/contato.phtml' ) );
                                // definindo remetente
                                $mail->setFrom ( $formulario->getValue ( 'email' ), $formulario->getValue ( 'nome' ) );
                                // definindo destinatário
                                $mail->addTo ( 'destino@site.com.br' );
                                // definindo assunto do email
                                $mail->setSubject ( 'Contato via site' );
                                // enviando
                                $mail->send ();
                                // renderizando a view de sucesso
                                $this->render ( 'sucesso' );
                        }
                }
                $this->view->formulario = $formulario;
        }
        
}


/application/forms/Contato.php
<?php

class Application_Form_Contato extends Zend_Form
{

    public function init()
    {
    	$filtros = array (new Zend_Filter_StripTags (), new Zend_Filter_StringTrim () );
    	
    	$this->setMethod(Zend_Form::METHOD_POST);
    	
    	// NOME
    	$nome = new Zend_Form_Element_Text ( 'nome' );
    	$nome->setLabel ( 'Nome: *' )->setRequired ()->addFilters ( $filtros );
    	$this->addElement ( $nome );
    	
    	// EMAIL
    	$email = new Zend_Form_Element_Text ( 'email' );
    	$email->setLabel ( 'Email: *' )->setRequired ()->addValidator ( new Zend_Validate_EmailAddress () );
    	$this->addElement ( $email );
    	
    	// ASSUNTO
    	$assunto = new Zend_Form_Element_Text ( 'assunto' );
    	$assunto->setLabel ( 'Assunto: ' )->addFilters ( $filtros );
    	$this->addElement ( $assunto);
    	
    	// MENSAGEM
    	$mensagem = new Zend_Form_Element_Textarea ( 'mensagem' );
    	$mensagem->setLabel ( 'Mensagem: *' )->setRequired ()->setAttrib ( 'rows', 4 )->addFilters ( $filtros );
    	$this->addElement ( $mensagem );
    	
    	// BOTÃO DE ENVIO
    	$enviar = new Zend_Form_Element_Submit ( 'enviar' );
    	$enviar->setLabel ( 'Enviar Contato' );
    	$this->addElement ( $enviar );
    	
    }

}





1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)