2011-05-31 61 views
0

我正在創建一個配置文件腳本,用戶可以在其中編輯其個人信息,興趣和鏈接。在函數內正確添加函數

我有一個表單中的所有字段,但現在我想通過製表符將它們分開。所以我會有一個個人信息標籤,興趣標籤和鏈接標籤。在每個頁面中,我將有一個表單將數據提交給相應的函數。例如,如果您正在編輯的個人信息表格將直接向mysite.com/edit/personal_info

的功能應該是這樣的

function edit() { 

    function personal_info() { 
     //data 
    } 

    function interests() { 
    //data 
    } 

    function links() { 
    //data 
    } 

} 

我不知道如何正確地從編輯()函數將數據發送到所有的子功能。

我將下面的一般數據添加到我的所有功能,但我想添加一次,所有的功能應該有它。我也試圖避免全局變量。

$this->db->where('user_id', $this->tank_auth->get_user_id()); 
$query = $this->db->get('user_profiles'); 
$data['row'] = $query->row(); 

然後在每個子功能我有驗證規則(笨)下面是對的personal_info功能

$this->form_validation->set_rules('first_name', 'First Name', 'trim|required|xss_clean|min_length[2]|max_length[20]|alpha'); 
$this->form_validation->set_rules('last_name', 'Last Name', 'trim|required|xss_clean|min_length[2]|max_length[20]|alpha'); 
$this->form_validation->set_rules('gender', 'Gender', 'trim|required|xss_clean|alpha'); 

和語句將數據添加到數據庫或返回如果驗證錯誤的規則規則失敗

if ($this->form_validation->run() == FALSE) //if validation rules fail 
     {   
      $this->load->view('edit_profile', $data); 
     } 
     else //success 
     { 
     $data = array (     
       'first_name' => $this->input->post('first_name'), 
       'last_name'  => $this->input->post('last_name'), 
       'gender' => $this->input->post('gender') 

      ); 
      $this->load->model('Profile_model'); 
      $this->Profile_model->profile_update($data);    
     } 

如何正確地創建這些子函數而不必在每個代碼中重複代碼?

回答

3

哇,你有點迷失了我。你爲什麼在函數中使用函數?如果你使用的是CodeIgniter,那麼這些函數應該屬於一個類:

class Edit extends CI_Controller { 
    function personal_info() { 
    /* Do personal info stuff. */ 
    } 

    function interests() { 
    /* Do interests stuff. */ 
    } 

    function links() { 
    /* Do links stuff. */ 
    } 

    function _common() { 
    // The underscore makes the function not available to browse, but you can 
    // put common code here that is called within the other functions by 
    // invoking $this->_common(); 
    } 
} 
+1

這當然會出現在名爲controllers/edit.php的文件中。欲瞭解更多信息,我鼓勵您查看本站的控制器文檔:http://codeigniter.com/user_guide/general/controllers.html – 2011-05-31 18:03:32

+0

謝謝你的例子!我忘記了CI的課程。我使用了'$ this - > _ common();'按照說明操作! :) – CyberJunkie 2011-05-31 18:14:57

+0

很高興它的作品,並與您的網站祝你好運!我使用CodeIgniter相當多,我想你會發現它是一個方便的框架來使用。 – 2011-05-31 18:22:18

2

通過您的代碼製作方式,它看起來像您使用codeigniter。

當您請求mysite.com/edit/personal_info時,它會請求一個名爲edit的控制器和一個名爲personal_info的函數,因此您不需要函數內部的函數,只需要編輯控制器內部的函數類。更多的url段將作爲參數傳遞給函數。

+0

謝謝你的解釋! – CyberJunkie 2011-05-31 18:15:58