Olá pessoal!
Hoje vou mostrar como se enviar um email em php (codeigniter) no formato de HTML. Vou utilizar o exemplo de um formulário de indicar um artigo para um amigo. Já que não vejo necessidade de abrir uma nova página, vou utilizar o jquery para enviar via post sem dar um refresh na página.
No decorrer da explicação haverá alguns detalhes importantes para ser usados em outras ocasiões.
Vamos começar pela VIEW:
O action do formulário na verdade não vai ser utilizado, pois o envio será feito via jquery, porém, o caminho especificado nele é o que será usado no método $.post().
Repare que existem 2 inputs hidden. Eles serão responsáveis por preencher tanto o link quanto o título do artigo, que por sua vez será enviado para o email do convidado.
Um detelhezinho que sempre utilizo em sistemas de notícias e artigos, além de inserir o título do artigo na URL, que por sua vez ajuda muito no SEO eu removo os espaços e alguns caracteres não recomendados. Essa prática está localizada no input hidden com id ="lk". Utilizo o ereg_replace para tal função. Nesse caso removi apenas os espaços em branco e interrogações, trocando pelo hífen (-). Como citei em outro artigo URL dinâmicas.
O CONTROLLER é bem simples, apenas irá puchar a função do MODEL.
O MODEL será responsável em pegar os POSTS, criar e enviar o email para o amigo: artigos_model.php
Nas primeiras linhas vamos pegar os posts, em seguida vamos chamar a library email do codeigniter. Criamos uma variável para guardar o conteúdo do email, consequentemente trabalhando junto com os posts. Na criação dessa variável podemos utilizar as tags de HTML comuns, ou seja, as que os servidores de email suportam. Não é recomendado usar tags de formulário, iframe, entre outras.
Em relação ao CSS, é recomendado usar o método inline, tanto criando classes antes do head quanto usando os styles nas próprisa Tags. Já tentei chamar alguns CSSs na tag link mas não deram certo.
A linha $config['mailtype'] = 'html' é fundamental para que tudo funcione corretamente. Caso os emails não sejam enviados, altere a linha $config['mailpath'] para 'mail'.
Como se deve imaginar as funções de email já dizem tudo:
->from = Email do remetente
->to = Email de quem vai receber
->subject = Assunto do email
-> message = Utilizamos a variável que guardarmos o conteúdo do email.
no final do código existe uma linha com comentário. Ela poderá ser usada caso queiram dar um feedback do envio. Nesse caso iríamos alterar a função $.post para $().get. Isso será visto Agora:
JQUERY
vamos criar um arquivo para configurar o envio do formulário. Vou chamá-lo de artigos.js
Lembrando que temos que puchar a função definindo um ID para o formulário (view). A partir dele chamamos a função submit(); Fazemos uma pequena validação (em breve vou postar um modo bem simples de validar com classes) dos campos para não irem em branco. Depois utilizamos a função $.post e utilizo um callback para enviar um alert que foi enviado.
Lembrando que na view onde está o formulário o arquivo jquery tem que ser chamado, e antes do artigos.js.
Não informei o nome do controller, pois vai depender de cada um a definição.
Qualquer dúvida é só mandar. Vamos evoluir juntos.
terça-feira, 23 de março de 2010
Assinar:
Postar comentários (Atom)
Opa amigo, sou de Recife também, eu utilizei o framework Code Igniter em vários projetos já. Você trabalha com ele também?
ResponderExcluirSim... depois que descobri ele utilizo em todos os projetos que desenvolvo. o que te chamou mais atenção nele?
ResponderExcluirOlá!! achei interessante o método !! no entanto como não sou programador não entendi para adaptar o seguinte:
ResponderExcluirQue codigo uso para chamar o jquery na vew
Onde coloco este controler??
Não dá para colar os códigos poderia disponibilisar para dowload??
Obrigado!!
Não dá para colar o codigo!!
ResponderExcluirQue codigo uso para chamar o Jquery na View!!
Como uso este controler?? é uma pagina separada ou onde coloco!!
Na verdade esse método é através de MVC. Os controllers são responsáveis por enviar as funções e variáveis para as views. Em code igniter para chamar o arquivo jquery, tem que ser usada a função "base_url()" que é configurada no arquivo system/application/config/config.php
ResponderExcluirVocê conhece o codeigniter?