2016-06-22 3 views
0

私はコントローラ内にグローバル変数を定義しましたが、index()関数内で値を割り当てています。 index()内でアクセス可能な値ですが、aboutやその他の関数内ではアクセスできません。どうすればいい?codeigniterグローバル変数の値がアクセス可能でない

class Manage_business extends CI_Controller 
    { 
    var $id; 

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

    public function index($no) 
    { 

     $this->id=$no; 
     echo $this->id; 
    } 

    public function about() 
    { 
     echo $this->id; 
     die(); 
} 
} 
+0

を確認してください。http://stackoverflow.com/questions/17013397/code-igniter-best-place-to-declare-global-variableおよびhttp://stackoverflow.com/questions/19237316/how-to-use- global-variable-in-php-codeigniter – Saty

+0

コンストラクタ内に値が割り当てられています。私はindex()内に割り当てました。私はスーパーグローバル変数を望んでいません。 –

+0

about関数を直接使用している場合は、$ this-> idの値をindex関数で設定することはできません。 – Ali

答えて

1

、あなたが

class Manage_business extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->library('session); 
} 

public function index($no) 
{ 
    $this->session->set_userdata('id',$no) //to last 
    $this->session->set_flashdata('id',$no) //available only for the next refresh 
    echo $this->id; 
} 

public function about() 
{ 
    echo $this->session->id; 
    die(); 

} }

にあなたがあなたがインデックスに何をやったか見ることができるこの方法を持っている多くの選択肢の一つである、セッションを使用してください試してみてください他の方法もありますが、これは最も効果的で使いやすいと思います。

+0

フラッシュデータは、redirect()を使用している場合にのみ動作します。 – user4419336

+0

@ wolfgang1983ええ、上記のとおりですが、彼はグローバル変数を埋めようとしていますが、それらのメソッドを呼び出すためのさまざまなメソッドで、 、彼はセッションやコントローラに沿って自分のデータを保持する何かを必要とする – marcoFSN

0

変数宣言でvarを使用していますが、これは構文エラーを生成しています。グローバル変数は、変数がクラス内の他の関数で使用できるようにconstruct()で作成できます。

以下の訂正されたコードを確認してください。

class Manage_business extends CI_Controller 
{ 


public function __construct() 
{ 
    parent::__construct(); 
    $id;   
} 

public function index($no) 
{ 

    $this->id=$no; 
    echo $this->id; 
} 

public function about() 
{ 
    echo $this->id; 
    die(); 
} 
} 
0

codeigniterでは、コントローラまたはモーダルで値を定義し、それらをフォワードする必要があるため、このメソッドは使用できません。最も簡単な方法の1つはconfig/constants.phpで定数として定義することです。これは、モーダルまたはビューまたはコントローラに渡さずにアプリケーションから利用できるようになります。どこでもグローバルにアクセス可能です。別の方法では、セッションを呼び出して値を抽出する必要があります。

関連する問題