2016-10-04 6 views
0

文字列をコントローラからビューに渡したいと思っています。だから私は、[「emailstrと] $データを書き込む[」emailfail ']このような場合は、else節でControllerページにcodeigniter email関数の値をコントローラからビューに渡しますか?

   $this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text' 
       $this->email->from('[email protected]', "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); 

をしかしビューページでは、私が送信され、成功の文字列電子メールを書くことができますが、エラーがで発生しました$ 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."<br/><br/>"; 
     if($emailfail != null) {echo $emailfail."<br/><br/>";} else{} 
     echo anchor('home', 'กลับสู่หน้าหลัก'); 

?> 
</body> 
</html> 

どうすればよいですか?あなたの外側の場合は条件が成功しない場合& $データ[ 'emailfail']

が初期化されていない

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

$データ[ 'emailstr']:ので

答えて

0

です。私はあなたのケースでそれが起こると思います。

+0

はいで詳細を確認するが、私は[「emailfail」]文字列...を書くdidnotた場合、それが実際に失敗したときに、それは「電子メールを送信できませんでした」というメッセージを持っていなかったので、私はそれらを書いてみますどちらも – tuchawat

0

!=nullの代わりにisset()を使用してください。存在しない値に対して比較を実行することはできませんが、変数に設定されていて、NULLでない場合、isset()によって変数が決定されます。

if(isset($emailfail)) {echo $emailfail."<br/><br/>";} else{} 

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

0

代わりに文字列を送信する以下のような配列を送信し、おそらく、我々は「に異なる値を割り当てる必要があり

<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."<br/><br/>"; 
     if($emailstatus != "success") {echo $emailfail."<br/><br/>";} else{} 
     echo anchor('home', 'กลับสู่หน้าหลัก'); 
    }else{ 
     echo "<h3>เข้าสู่ระบบแล้ว</h3>"; 
     echo "<pre>"; 
     print_r($this->session->all_userdata()); 
     echo "</pre>"; 
     echo anchor('login/logout', 'Logout')."<br/>"; 
     echo anchor('home', 'กลับสู่หน้าหลัก'); 
    } 
?> 
</body> 
</html> 
0

以下のような表示チェックemailstatusで

$key = md5(uniqid()); 
$this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text' 
$this->email->from('[email protected]', "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); 

をチェック2つの異なる変数に名前を付ける代わりに同じ変数を使用します。

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

また、後でセッションフラッシュデータを使用したいと思うかもしれません。あなたの例のように情報を表示するためにフラッシュデータを使用すると便利です。

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

とビューページでは、それは

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

によってアクセスすることができポイントは、それは、リダイレクト後にセッションにメッセージを設定されていますが、ページを更新した後、メッセージがすでになくなっています。

here

関連する問題