LOGIN:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

CakePHP

Feed da seção CakePHP

Newsletter de CakePHP


Segunda-feira, 23/06/2008 - 14:00 - Por Oberaldo Büll Junior
Seções relacionadas:

Envio de e-mail com CakePHP

Oi pessoal. Hoje apresentarei a vocês como utilizar o componente nativo do CakePHP para envio de e-mails. No caso deste artigo, para um formulário de contato.

Lembrando que este é um componente nativo do CakePHP 1.2.

Inicialmente, vamos criar nosso formulário com ajuda do helper Form do CakePHP.

// app/views/contacts/index.ctp
<div>

<?php echo $form->create(´Contact´, array(´url´ => ´/contacts´)); ?>
<?php
echo $form->input(´primeiroNome´);
echo $form->input(´sobreNome´);
echo $form->input(´email´);
echo $form->input(´msg´, array(´type´ => ´textarea´));
?>
<?php echo $form->end(__(´submit´, true)); ?>

</div

Acima, temos um formulário de contato básico. Crie uma pasta de nome contacts dentro da pasta app/view

Ex. (/app/view/contacts) e salve este arquivo como index.ctp.

Agora vamos criar nosso modelo:

// app/models/contact.php
<?php
class Contact extends AppModel
{
var $name = ´Contact´;
var $useTable = false;
}
?>

Nosso modelo será bem simples, sem validação. Mas isto não impede de vocês inserirem validações nos campos, utiliizando componentes de segurança, etc.

Esta variável $useTable que usei acima, é para falar ao CakePHP que este modelo não trabalhará com nenhuma tabela, por isto o valor está especificado como false.

Vamos agora ao nosso controller:

// app/controllers/contacts_controller.php
<?php
class ContactsController extends AppController {

var $name = ´Contacts´;
var $uses = ´´;
var $components = array(´Email´);

function index()
{
if(isset($this->data))
{
$name = $this->data[´Contact´][´primeiroNome´] . ´ ´ . $this->data[´Contact´][´sobreNome´];
$from = $this->data[´Contact´][´email´];
$subject = ´Contato do Site´;
$msg = $this->data[´Contact´][´msg´];

$this->Email->sendAs = ´both´; // html, text, both
$this->set(´conteudo´, $msg); // especifica variavel da mensagem para o template
$this->Email->layout = ´contact´; // views/elements/email/html/contact.ctp
$this->Email->template = ´contact´;

// set view variables as normal
$this->set(´from´, $name);
$this->set(´msg´, $msg);

$this->Email->to = ´ seuemail@seusite.com.brEste e-mail está sendo protegido dos spam bots, você precisa ter o JavaScript habilitado para vê-lo ´;
$this->Email->subject = $subject;
$this->Email->replyTo = ´ naoresponda@seusite.com.brEste e-mail está sendo protegido dos spam bots, você precisa ter o JavaScript habilitado para vê-lo ´;
$this->Email->from = $name . ´<´ . $from .´>´;

if ( $this->Email->send($msg) ) {
$this->Session->setFlash(´E-mail enviado´);
} else {
$this->Session->setFlash(´E-mail nao enviado´);
}
$this->redirect(´/´);
}
}

}
?>

Seguem agora algumas explicações sobre nosso controle:

$this->Email->sendAs = ´both´;

Esta parte serve para configurarmos como será enviado o e-mail. Se terá formato html, texto ou ambos(both)

$this->Email->layout = ´contact´;

Nesta parte informamos ao componente Email qual será o layout utilizado neste envio.

Lembrando que o layout deverá ser salvo dentro da pasta

/app/view/elements/email/html/contact.ctp e /app/view/elements/email/text/contact.ctp

respectivamente, para os layouts dos e-mails texto ou html.

Bom, espero que este artigo ajude vocês a inserir em seus sites/projetos os formulários de contato, sem que haja a necessidade de utilizar algum script externo (phpMailer, SwiftMailer, etc), para um simples formulário de contato.

Abraços e até o próximo artigo.

Todos os artigos de Oberaldo Büll Junior

2 comentários publicados

  • 1. Third party helpers e afins

    Terça-feira, 27/01/2009, por Leonardo Cabral

    O Cake é realmente mágico. Compreendo que não seja necessário utilizar scripts externos para envia e-mail. Todavia, o PHPMailer ainda é uma ferramenta muito útil que pode trabalhar em paralelo; principalmente em situações onde faz-se necessário o envio via SMTP, por exemplo. Seria de grande utilidade um artigo mostrando o Cake trabalhando em conjunto com ferramentas conhecidas. Abraço.

    Responder comentário
  • 2. 5 estrelas

    Sexta-feira, 27/02/2009, por Alexandre de Oliveira

    Ótimo, acabei de usá-lo ;)

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Oberaldo Büll Junior trabalha com desenvolvimento de sites e sistemas em PHP/MySQL a cerca de 5 anos, e à cerca de pouco mais de 1 ano conheceu o CakePHP Framework. Atualmente, administra o site nacional oficial do CakePHP (www.cakephp.com.br), participa ativamente do grupo do CakePHP no Google, tanto nos tópicos abertos como na moderação do grupo.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.