2011-11-17 124 views
0

我正在爲我的註冊過程創建激活電子郵件。我需要將包含激活碼和電子郵件地址的變量從我的模型傳遞迴我的控制器,我將發送電子郵件。Codeigniter從模型到控制器返回變量

我的註冊表格當前將所有註冊數據寫入數據庫並創建並激活代碼。

如何將變量'activation_code'和'email'從我的模型傳遞迴我的控制器以用於我的電子郵件。

型號:

... 
     $new_member_insert_data = array(
      'first_name' => $first_name, 
      'last_name' => $last_name, 
      'email_address' => $email, 
      'password' => hashPassword($salt, $password, $hash), 
      'activation_code' => activationCode($email, $hash.$salt), 
      'hash' => $hash 
     ); 

     $insert = $this->db->insert('members', $new_member_insert_data); 
     return $insert; 
    } 

控制器

$this->load->model('members_model'); 
        if($this->members_model->create_member())//return variables here somehow 
        { 

//get activation code + email variables 
//send activation email 
         $this->session->set_flashdata('success', 'success'); 
         redirect('home', 'location'); 
        } 
        else 
        { 
         $viewdata['main_content'] = $category; 
         $this->load->view('includes/template', $viewdata); 
        } 

回答

1

可以只是返回成功值的數組,如果失敗,FALSE:

$insert = $this->db->insert('members', $new_member_insert_data); 
if ($insert) { 
    return $new_member_insert_data; // Same data 
} 
else { 
    return FALSE; 
} 

...但它並沒有什麼意義,因爲你必須必須通過東西模型的方法,以便它是有用的(或有權訪問這些值之前,您的給定代碼是未完成)。此外,它可能會混淆返回不同的數據類型,通常是一個壞主意。

儘管無法訪問您的完整代碼,但我認爲在INSERT運行後,最安全和最準確的方式可能會運行另一個查詢。例如,通過email_address查找用戶(假設它應該是唯一的)。

+0

我遵循你的建議,並運行第二個功能,通過電子郵件地址查找用戶並獲取激活碼。謝謝 – hairynuggets

相關問題