2011-06-16 11 views
7

他の関数によって更新されたpublicコントローラ変数の値にアクセスする方法を知っている人はいますか? コード例 コントローラcodeigniterコントローラのpublic変数の値へのアクセス

class MyController extends CI_Controller { 

public $variable = array(); 

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

function index(){ 
    $this->variable['name'] = "Sam"; 
    $this->variable['age'] = 19; 
} 

function another_function(){ 
    print_r($this->variable); 
} 

}

私は()another_functionを呼び出すとき、私は問題になる可能性がどのような...空の配列を取得しますか? すべてのヘルプは、あなたがその特定のページに移動するとき

+0

愚かな質問、(あなたは、インデックスと呼ばれる持って)? –

+1

これはうまくいくはずですe 'index()'は呼び出されていません。 – Dunhamzzz

答えて

9

代わりに、インデックスのコンストラクタ、()。

class MyController extends CI_Controller { 

    public $variable = array(); 

    function __construct() { 
     parent::__construct(); 
     $this->variable['name'] = "Sam"; 
     $this->variable['age'] = 19; 
    } 

    function index(){ 

    } 

    function another_function(){ 
     print_r($this->variable); 
    } 
    } 

あなたがindex()を呼び出したい場合は、another_function()を呼び出し、CI sessionクラスを使用してみてください。

class MyController extends CI_Controller { 

public $variable = array(); 

function __construct() { 
    parent::__construct(); 
    $this->load->library('session'); 
    if ($this->session->userdata('variable')) { 
     $this->variable = $this->session->userdata('variable'); 
    } 
} 

function index(){ 

    $this->variable['name'] = "Sam"; 
    $this->variable['age'] = 19; 
    $this->session->set_userdata('variable', $this->variable); 
} 

function another_function(){ 
    print_r($this->variable); 
} 
     } 
+0

私のために古いが金。タクシー –

2

index()関数が呼び出されるだけます。.. apreciatedされますすなわちindex.php/mycontroller/indexのでindex()関数を呼び出すことはありませんindex.php/mycontroller/another_functionに行きます。ユーザーがインデックスページに移動して詳細を表示する必要がある場合は、最初にそれらを指示し、詳細をデータベースまたはセッション変数に保存します。値が前もって分かっている場合(つまり、常に「サム」と「19」になる場合)、そのコードをコンストラクタに挿入します。コントローラからページを呼び出すたびに呼び出されます。

関連する問題