Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Dkid

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

Recommended Posts

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

Share this post


Link to post
Share on other sites
DrMachine

Ya está bem documentada. Para mim a maior falha é falta de um authentication...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.