2015-10-02 42 views
0

我希望能夠顯示應用程序中任何位置的表中的屬性,並讓它們由用戶編輯。這意味着數據將來自數據庫中的一行。每列都有一個默認值,用戶可以根據自己的選擇進行更改。如何使用codeigniter中的my_controller顯示對象的屬性

表列可能看起來像這樣:

| id | admin_id |醫生|從業者|學生|學生|等等...

這裏是我的模型:

class Lang_trans_model extends CI_Model { 

public function get_lang_trans($admin_id){ 
    $this->db->where('admin_id', $admin_id); 
    $query = $this->db->get('lang_trans'); 
    return $query->row(); 
    } 

這裏是我的MY_Controller:

class MY_Controller extends CI_Controller { 


public function __construct() { 
    parent::__construct(); 

    $this->load->model('key_items_model'); 
    $this->load->model('lang_trans_model'); 

    foreach ($this->key_items_model->get_key_items() as $result){ 
     $this->label[$result->key] = $result->value; 
    } 

    //$admin_id = $this->session->userdata('admin_id'); 
    $admin_id = 3; 

    $lang = $this->lang_trans_model->get_lang_trans($admin_id); 
    //not sure what should go here???? 
    //I want to be able to use $lang->practitioner; to be able to have practitioner, or the edited attribute to show on the page 

var_dump($lang); 
// produces the following: 
//object(stdClass)[26] 
//public 'id' => string '3' (length=1) 
//public 'admin_id' => string '3' (length=1) 
//public 'practitioner' => string 'blah' (length=4) 
//public 'practitioners' => string 'blahplural' (length=10) 

如何完成MY_Controller能夠在任何地方使用這些數據字段我的應用程序?

我不介意使用面向對象的語法或數組語法。無論哪個更容易。我無法弄清楚如何在每個視圖中不使用foreach語句來顯示字段。我想用$ lang->醫生來調用數據;視圖中的格式。

在此先感謝。

+0

分配結果變量即'$ lang_trans_key_items = $這個 - > key_items_model-> get_key_items()'。 'var_dump($ lang_trans_key_items); exit;'看看你在那裏以什麼形式出現了什麼。 – Tpojka

+0

什麼是'$ lang'的轉儲?請修改它,但請將其格式化爲標籤。 – Tpojka

+0

沒有老師領域。 – Tpojka

回答

0

聲明父類的屬性。不是從子類調用它:

class MY_Controller extends CI_Controller 
{ 
    public $lang;//parent variable declared 

    public function __construct() 
    { 
     parent::__construct(); 

     $this->load->model('key_items_model'); 
     $this->load->model('lang_trans_model'); 

     foreach ($this->key_items_model->get_key_items() as $result) { 
      $this->label[$result->key] = $result->value; 
     } 

     //$admin_id = $this->session->userdata('admin_id'); 
     $admin_id = 3; 

     //dedicating value to variable 
     $this->lang = $this->lang_trans_model->get_lang_trans($admin_id); 
    } 
} 

兒童控制器:

class Practitioners extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     // no need to call model if it is called in parent controller 
    } 

    public function index() 
    { 
     var_dump($this->lang); 
    } 
} 
+0

完美!非常感謝。你是一個節省時間的人。現在,我所要做的就是在視圖(html)中提供以下內容:<?php echo $ this-> langtrans-> practitioner; ?>從業者是要顯示的屬性。 – Christopher

+0

我必須將變量$ lang更改爲$ langtrans,因爲它與CI_Loader文件中定義的內部變量變量衝突。 – Christopher

+0

是的。您必須在父控制器中初始化變量,而不是在子控制器中使用它。在我自己的項目中,我有一個「全局」數組變量,我稱之爲「$ data」,而不是在子控制器中所有需要輸出的分配變量。例如'$ this-> data ['title'] = $ this-> Common_m-> get_title(); $ this-> load-> view('specific_view',$ this-> data)'。 – Tpojka

相關問題