【问题标题】:How to pass email sent success message to view in codeigniter?如何通过电子邮件发送成功消息在codeigniter中查看?
【发布时间】:2014-08-21 16:49:56
【问题描述】:

我正在使用 Codeigniter 及其电子邮件和表单验证库来创建联系表单。单击提交按钮后,我想显示“谢谢您的消息”之类的内容,但无论我尝试什么都行不通。

这是我的代码: 控制器:

class contact extends MY_Controller {
function  __construct() {
    parent::MY_Controller();       

}

public function index(){        
    if(!isset($data['message'])){
        $data['message']="";   
    }     
    $this->load->view('contact', $data);
}   

public function send_mail(){
$this->load->library('form_validation');
         $this->form_validation->set_rules("full_name", "Name: ", "required|xss_clean");             
         $this->form_validation->set_rules("email", "Email: ", "required|valid_email|xss_clean");
         $this->form_validation->set_rules("message", "Message: ", "required|xss_clean");
         if($this->form_validation->run()==false){
             $this->load->view('contact');
         }
         else{             
         $this->load->library("email");
         $this->email->from(set_value("email"), set_value("full_name"));
         $this->email->to("my.emailaddress@mailserver.com");
         $this->email->subject("request from ...");
         $this->email->message(set_value("message"));
         $this->email->send();
         $data['message']="Thanks for your message!";
         $this->load->view('contact', $data);
         }

    }

}

观点:

$this->load->helper('form');
echo validation_errors();
echo form_open('contact/send_mail');
echo form_label('Name: ', 'full_name');
$data=array(
    "name"=>"full_name",
    "id"=>"full_name",
    "value"=>set_value("full_name")
);
echo form_input($data);
echo form_label('Email: ', 'email');
$data=array(
    "name"=>"email",
    "id"=>"email",
    "value"=>set_value("email")
);
echo form_input($data);
echo form_label('Message: ', 'message');
$data=array(
    "name"=>"message",
    "id"=>"message",
    "value"=>set_value("message")
);
echo form_textarea($data);
echo form_submit("contact_submit", "submit");
echo form_close();

每当我尝试在视图中 var_dump $data 时,它都没有定义。那么如何在提交/发送邮件后正确地重新加载联系人视图并将“已发送电子邮件”消息传递给视图呢?

【问题讨论】:

    标签: php forms codeigniter email


    【解决方案1】:

    使用会话闪存数据。

    之后

    $this->email->send();
    

    输入这段代码

    $this->session->set_flashdata('message','Thanks for your message!');
    

    以及联系人视图中的以下代码

    echo @$this->session->flashdata('message');
    

    【讨论】:

      【解决方案2】:

      您需要echo $message 而不是var_dump($data)

      所以你的控制器变成了

      public function send_mail(){
      $data['message']="";
      ...
      if($this->form_validation->run()==false){
               $this->load->view('contact',$data);
          }
      else
      {             
           $this->load->library("email");
           $this->email->from(set_value("email"), set_value("full_name"));
           $this->email->to("my.emailaddress@mailserver.com");
           $this->email->subject("request from ...");
           $this->email->message(set_value("message"));
           $this->email->send();
           $data['message']="Thanks for your message!";
           $this->load->view('contact', $data);
       }
      

      在视野中

      echo validation_errors();
      echo $message;
      echo form_open('contact/send_mail');
      

      【讨论】:

        【解决方案3】:
        //When you send $data from controller like
         $data['message']="Thanks for your message!"; 
         $this->load->view('contact', $data);
        
        //You need to do below to get that values
          echo $message;
        

        【讨论】:

        • 谢谢!那完成了工作!我不是一个大的codeigniter专家,但很高兴知道! :)
        • @user2718671 它可以工作,但是当表单验证为false 时,您将在view 文件中收到未定义的变量消息。
        • @karn thakkar 您应该关闭 index.php 中的错误通知,例如 error_reporting(E_ALL^E_NOTICE);在开关案例“发展”中
        • @MayankTailor 会在开发过程中静音所有通知,这不是一个好的做法。您应该涵盖所有 已知 错误,以免它成为@987654325 的原因@ 在您的应用中稍后阶段。
        • @karan 该代码只会关闭通知,我们将收到所有警告错误和致命错误等。这里是 php careerride.com/PHP-types-errors.aspx 的所有错误列表。作为开发人员,我们应该解决所有由 php 生成的错误,但不需要 E_NOTICE。 :)
        猜你喜欢
        • 2012-06-11
        • 2013-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 2012-05-22
        相关资源
        最近更新 更多