2013-10-18 96 views
0

我正在探索codeigniter很長一段時間,我在探索它時遇到的大部分問題已經通過Google搜索解決了,但現在我面臨的問題有點奇怪。所以情況就是這樣。如果驗證後沒有錯誤,我有一個控制器將驗證表單並將所有輸入從表單傳遞到模型。CodeIgniter - 加載模型後無法加載視圖

我在同一個控制器中有另一個功能,它會在被叫時發送電子郵件。所以我想要做的是驗證表單,使用數組發送所有輸入到模型並將其插入數據庫,然後將電子郵件發送到用戶的電子郵件地址。

下面是從註冊控制器部分代碼:

if($this->form_validation->run() == FALSE){ 
    //load custom config 
    $this->config->load('site_config', TRUE); 
    $this->load->library('session'); 
    $this->load->helper('form'); 

    //retrieve data 
    $data['site_title'] = $this->config->item('site_title', 'site_config'); 
    $data['site_login'] = $this->config->item('site_login', 'site_config'); 
    $data['site_url'] = $this->config->item('site_url', 'site_config'); 
    $data['img_folder_path'] = $this->config->item('img_folder_path', 'site_config'); 

    $this->load->view('view_header', $data); 
    $this->load->view('view_signup',$data); 
    $this->load->view('view_footer'); 
}else{ 
    $this->load->model('Adduserinfointoactivationtable'); 

    $user_infos = array('first_name'     => $this->input->post('first_name'), 
         'last_name'     => $this->input->post('last_name'), 
         'email'      => $this->input->post('email'), 
         'tel'      => $this->input->post('tel'), 
         'fax'      => $this->input->post('fax'), 
         'add_1'      => $this->input->post('add_1'), 
         'add_2'      => $this->input->post('add_2'), 
         'city'      => $this->input->post('city'), 
         'post_code'     => $this->input->post('post_code'), 
         'state'      => $this->input->post('state'), 
         'password'     => sha1($this->input->post('pass_2')), 
         'activation_code'   => sha1(sha1($this->input->post('email').$this->input->post('pass_2'))), 
         ); 

    $this->Adduserinfointoactivationtable->addUserInfo($user_infos); 
    $this->send_mail(); 
} 

這裏是模型:

public function addUserInfo ($user_infos){ 

$sql = "INSERT INTO tbl_user_Account (email_add, activation_code, fname, lname, tel, fax, add1, add2, city, post_code, state, password) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);"; 

$query = $this->db->query($sql, array($user_infos['email'], $user_infos['activation_code'], $user_infos['first_name'], $user_infos['last_name'], $user_infos['tel'], $user_infos['fax'], $user_infos['add_1'], $user_infos['add_2'], $user_infos['city'], $user_infos['post_code'], $user_infos['state'], $user_infos['password'])); 

$query->result_array(); 

} 

當我放置$this->send_mail();之後的東西,它的工作原理。我做了一些測試,電子郵件功能工作正常。但是當我以這種方式呼叫$this->Adduserinfointoactivationtable->addUserInfo($user_infos);後,它不發送電子郵件。我也注意到無論我在$this->Adduserinfointoactivationtable->addUserInfo($user_infos);之後做什麼,例如加載視圖或回顯某些內容,它都不起作用。

有人能告訴我這個嗎?

+0

你爲什麼要這麼做$查詢 - > result_array(); ?? –

+0

是的,太粗心了,因爲複製代碼並粘貼它沒有雙重檢查。由於插入了數據,下次應該多關注模型,所以我沒有太在意模型。再次感謝評論並指出。 :) – Chivaa

回答

1

我認爲你的問題可能是,根據CodeIgniter documentation$this->db->query()返回一個布爾值,如果執行「插入」類型的查詢。

這發生在你的情況。因此,您可能會通過執行$query->result_array()來創建致命錯誤。

舉一個簡單的修復,你也許可以嘗試以下方法:

if (is_object($query)) { 
    return $query->result_array(); 
} else { 
    return $query; 
} 
+0

嗨garbetjie,謝謝一堆。是的,它現在有效。這可能是如此愚蠢,因爲我插入的數據,而不是選擇數據...我會接受這個答案。 :) – Chivaa

0

您不在其他部分加載任何視圖,對嗎?做一個重定向到相同的功能或成功功能頁面。

+0

嗨Nil'z。正如我所說我試圖做簡單的事情,只是回聲後,並沒有工作。 – Chivaa