2013-04-27 20 views
1

我已經用我的更新配置變量,在我的模型:在codeigniter中動態設置我的配置變量後,如何從其他控制器和模型訪問它們?

$this->config->set_item('userid', $user_id); 

,如果我在模型呼應它,我可以看到它被設置。

但是,如果我回聲它在控制器或使用另一種模式:

echo $this->config->item('userid'); 

它顯示的原始值。

我需要在整個會話中存儲此配置變量,但我不想使用會話變量。

回答

4

該配置僅適用於您設置該模型。如果你想要一個全局設置而不使用會話。

你可以在application/core創建一個核心模型,並將其命名

MY_Model

所以基本上什麼MY_Model做的是,它設置在延伸其所有車型您的配置。

class MY_Model Extends CI_Model 
{ 
    protected $user_id; 
    public function __construct() 
    { 
    parent::__construct(); 
    $this->config->set_item('userid', $this->user_id); 
    } 
} 

然後在您的模型上,您要設置應用,只是擴展您的模型。像

Model extends MY_Model 
{ 

    public function test($id) 
    { 
    $this->user_id = $id; 

    } 
} 

,或者你可以同時創建一個核心控制器如上述,但用控制器來模擬 閱讀更多http://ellislab.com/codeigniter/user-guide/general/core_classes.html

+0

嘿謝謝:)它的工作。我創建了一個核心模型並使用你的邏輯。我現在還想知道另外1件事,我是否還要將所有其他模型類也擴展到MY_Model? – Simone 2013-04-27 06:26:13

+0

@Simone是的,你需要,因爲核心模型持有你需要的全局配置項。 – tomexsans 2013-04-27 11:12:28

0

嘗試初始化配置$this->ci = & get_instance();然後設置類似 $this->ci->config->set_item('userid', $user_id);

我還沒有測試過......但我認爲它會起作用。

+0

我測試過它..使用$ ci =&get_instance();和$ ci-> config-> set_item('userid',$ user_id); – 2017-07-22 15:10:26

相關問題