Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Dkid

[Resolvido] Code Igniter Email, passar os os dados da view para o controlador

Mensagens Recomendadas

Dkid

Boas,

Como já tinha dito antes, não sou nenhum expert em php, no entanto gostei do Code Igniter, pois encontra-se bem estruturado, e penso que é isto que preciso.

Estou é com um problema, na documentação e nos sites que já procurei , falam muito de como enviar um email, mas não falam de como interagir o controlador com os dados vindos da view.

Eu já tenho a view criada, mas como é que o controlador sabe os dados que estão na view?

Se alguém me puder esclarecer agradeço.

Obrigado


I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

No controlador, na parte em que queres que a view seja mostrada, colocas:

$this->load->view('nome_da_view');

Acho que é isto que queres. :(


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dkid

Boas,

Hum, isto no alojamento o controlador funciona, eu pelos tutoriais aprendi a enviar as variaveis para a view, mas como é que o controlador recebe os dados do form da view ? é através do $_POST

vou colocar aqui os codigos para ver se me faço entender.

controlador (sendmail.php)

<?php

     class Sendmail extends Controller {
     
          function __construct() {
               parent::Controller();
               $this->load->library('email');
               $this->load->helper('url');
               $this->load->helper('form');
               $this->load->library('validation');
          }

          function index() {
          
               $config = array (
                    'protocol'     => 'smtp',
                    'smtp_host'    => 'ssl://smtp.googlemail.com',
                    'smtp_port'    => 465,
                    'smtp_user'    => 'mail_@gmail.com',
                    'smtp_pass'    => 'pass'
               );
               
               $this->load->view('formulario');
          
               $this->load->library('email', $config);
               $this->email->set_newline('\r\n');

               $this->email->clear();
               $this->email->from('mail', 'nome pimp');
               $this->email->to('mail');
         /* $this->email->cc(''); # não é preciso */
               $this->email->subject('power');
               $this->email->message('power');
#               $this->email->attach('');
               
#               $this->email->send();
#               $this->load->view('', $info);


               if ($this->email->send() ) {
                    echo 'sent';
               }
               
               else {
                    show_error( $this->email->print_debugger() );
               }

          }

     }
?>

formulario (formulario.php)

<head>
<div id="formulario">

<?php
     echo $this->validation->error_string;
     echo form_open('formulario');
?>
          
          <label for="nome">nome</label>
          <input type="text" name="nome" id="nome" required />
          
          <label for="email">email</label>
          <input type="text" name="email" id="email" required />
     
          <label for="assunto">assunto</label>
          <select id="assunto">
               <option value="motivo">motivo</option>
               <option value="motivo">motivo</option>
               <option value="motivo">motivo</option>
          </select>

          <p> <label for="mensagem">mensagem</label>
          <textarea name="mensagem" rows="8" cols="30" required></textarea>
          </p>
          
          <label for="upload">documento</label>
          <input type="file" id="upload" name="upload" size="18"/>     
          <input type="submit" id="enviar" name="enviar" value="Enviar!" />
          
     </form>

<div>


I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Sim, embora acho que se quiseres o CI te disponibiliza uma classe própria para isso.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dkid

Hum, mas eu estou a receber este erro em todas as variaveis

A PHP Error was encountered

Severity: Notice

Message: Undefined index: email

Filename: controllers/sendmail.php

Line Number: 27


I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Mostra o teu código actual. Já agora, recebes esse erro na página do formulário ou só ao submeter?


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dkid

<?php

     class Sendmail extends Controller {
     
          function __construct() {
               parent::Controller();
               $this->load->library('email');
               $this->load->helper('url');
               $this->load->helper('form');
               $this->load->library('validation');
          }

          function index() {
          
               $config = array (
                    'protocol'     => 'smtp',
                    'smtp_host'    => 'ssl://smtp.googlemail.com',
                    'smtp_port'    => 465,
                    'smtp_user'    => 'mail_@gmail.com',
                    'smtp_pass'    => 'pass'
               );
               
               $info = array (
                    'nome'	=> $this->input->post('nome'),
                    'mail'	=> $this->input->post('email'),
                    'motivo'	=> $this->input->post('motivo'),
                    'mensagem'	=> $this->input->post('mensagem),
               );
               
               $this->load->library('email', $config);
               $this->email->set_newline('\r\n');

               $this->email->clear();
               $this->email->from($info['mail'], $info['nome']);
               $this->email->to('destino___@gmail.com');
         /* $this->email->cc(''); # não é preciso */
               $this->email->subject($info['assunto']);
               $this->email->message($info['mensagem']);
#               $this->email->attach('');
               
#               $this->email->send();
#               $this->load->view('', $info);


               if ($this->email->send() ) {
                    echo 'sent';
               }
               
               else {
                    show_error( $this->email->print_debugger() );
               }

          }

     }
?>

O erro actual é

"Parse error: syntax error, unexpected T_STRING in /home/davidslv/public_html/webdev/davidslv/system/application/controllers/sendmail.php on line 30"

Agora é que fiquei ainda mais desnorteado, esse erro corresponde a :

              $this->load->library('email', $config);

e na minha view (formulario.php)

<?php
     echo $this->load->helper('form');
?>
          
          <label for="nome">nome</label>
          <input type="text" name="nome" id="nome" required />
          
          <label for="email">email</label>
          <input type="text" name="email" id="email" required />
     
          <label for="assunto">assunto</label>
          <select name="motivo">
               <option value="motivo">motivo</option>
               <option value="motivo">motivo</option>
               <option value="motivo">motivo</option>
          </select>

          <p> <label for="mensagem">mensagem</label>
          <textarea name="mensagem" rows="8" cols="30" required></textarea>
          </p>
          
          <label for="upload">documento</label>
          <input type="file" id="upload" name="upload" size="18"/>     
          <input type="submit" id="enviar" name="enviar" value="Enviar!" />
          
     </form>

<div>


I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Esqueces-te-te de fechar as aspas aqui:

                    'mensagem'  => $this->input->post('mensagem'),


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Apontas provavelmente para o controlador. Tens de apontar para a página que te irá receber e tratar os dados.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dkid

scorch fico-te muito agradecido pela ajuda!

Já consegui, fogo já andava desde domingo a tentar meter isto a funcionar.

Muito obrigado


I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.