首页 文章

codeigniter从控制器到视图传递emailfunction的值?

提问于
浏览
0

我想从控制器传递字符串到视图 . 所以我在Controller页面的If-Else子句中写了这样的$ data ['emailstr]和['emailfail']

$this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text'
                $this->email->from('supanat_thana@hotmail.com', "Webmaster");
                $this->email->to($this->input->post('email'));
                $this->email->subject("Confirm your account");
                $message = "<p>Thank you for register!</p>";
                $message .= "<p><a href='".base_url()."register/activate_user'>Click Here</a> To Activate your Account </p>";
                $this->email->message($message);



                    if($this->email->send())
                    {
                        $data['emailstr'] = "email has been sent";
                    }
                    else
                    {
                        $data['emailfail'] = "could not send the email.";
                    }



                $this->load->view('regislogin/success', $data);

但是在viewpage中,我可以编写成功的字符串电子邮件,但是在$ emailfail字符串上发生了错误:未定义的变量:emailfail

<DOCTYPE! html>
<html>
<head>
    <title> Register </title>
    <meta charset="utf-8">
</head>
<body>
<?php
        echo "<h3>Thank you for your registration</h3>";
        echo $emailstr."

"; if($emailfail != null) {echo $emailfail."

";} else{} echo anchor('home', 'กลับสู่หน้าหลัก'); ?> </body> </html>

我应该怎么做?

4 回答

  • 0

    这是因为:

    if($this->email->send())
    {
        $data['emailstr'] = "email has been sent";
    }
    else
    {
        $data['emailfail'] = "could not send the email.";
    }
    

    $ data ['emailstr']&$ data ['emailfail']

    如果您的外部条件不成功,则未初始化 . 我认为你的情况会发生这种情况 .

  • 0

    使用 isset() 而不是 !=null . 您可以't run a comparison on a value that doesn'存在,但 isset() 确定变量是否为 set 且不是 NULL .

    if(isset($emailfail)) {echo $emailfail."

    ";} else{}

    http://php.net/manual/en/function.isset.php

  • 0

    而不是像下面发送字符串发送数组并检查

    $key = md5(uniqid());
    $this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text'
    $this->email->from('supanat_thana@hotmail.com', "Webmaster");
    $this->email->to($this->input->post('email'));
    $this->email->subject("Confirm your account");
    $message = "<p>Thank you for register!</p>";
    $message .= "<p><a href='".base_url()."register/activate_user/$key'>Click Here</a> To Activate your Account </p>";
    
    $this->email->message($message);
                if($this->register_model->add_temp_user($key))
                {
                    if($this->email->send())
                    {
                        $data['emailstatus'] =   "success"; 
                        $data['emailstr'] =   "email has been sent";
                    }
                    else
                    {
                        $data['emailstatus'] =   "fail";
                        $data['emailfail'] = "could not send the email.";
                    }
                }
                $this->load->view('regislogin/success', $data);
    

    在View中查看emailstatus,如下所示

    <DOCTYPE! html>
    <html>
    <head>
    <title> Register </title>
    <meta charset="utf-8">
    </head>
    <body>
       <?php
       if($this->input->post("btn"))
       {
            echo "<h3>Thank you for your registration</h3>";
            echo $emailstr."

    "; if($emailstatus != "success") {echo $emailfail."

    ";} else{} echo anchor('home', 'กลับสู่หน้าหลัก'); }else{ echo "<h3>เข้าสู่ระบบแล้ว</h3>"; echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>"; echo anchor('login/logout', 'Logout')."
    "; echo anchor('home', 'กลับสู่หน้าหลัก'); } ?> </body> </html>
  • 0

    也许我们应该“为同一个变量分配不同的值”而不是命名两个不同的变量 .

    if($this->email->send())
    {
        $data['message'] = "email has been sent";
    }
    else
    {
        $data['message'] = "could not send the email.";
    }
    

    另外,我想以后您可能想要使用会话闪存数据 . 使用flash数据显示信息就像你的例子一样方便 .

    $this->session->set_flashdata('msg_to_display',$data['message']);
    redirect('/your/controller');
    

    在View页面中,可以访问它

    <?php echo $this->session->userdata('msg_to_display'); ?>
    

    关键是它在重定向后在会话中设置消息,但是一旦刷新页面,消息就已经消失了 .

    了解更多here

相关问题