0

設定:CodeIgniterのコンストラクタロードデータベース+は、私は私が私のCodeIgniterのコンストラクタに次のコードを追加する方法を知っていただきたいと思い変数

$this->load->model('members_model'); 
      $member = $this->session->userdata('email_address'); 
      $viewdata['pagecontent'] = $this->members_model->get_profile($member); 

にコードを私のコントローラ全体で使用されると、それのすべてを繰り返す愚か思われます時間。私はそれをコンストラクタに追加しようとすると、私は設定された変数を参照することができません。

これは、これまでのコンストラクタです:

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

     $this->load->model('members_model'); 
     $member = $this->session->userdata('email_address'); 
     $viewdata['pagecontent'] = $this->members_model->get_profile($member); 
    } 

なぜ上記のコードの仕事ではないでしょうか?コンストラクタには異なるコードが必要ですか?

答えて

1

コンストラクタはこの意味で他のすべてのメソッド(および同様の機能)と同様に動作します。したがって、変数は可変スコープの対象となります。

の操作を行います。

class Mycontroller extends CI_Controller { 

public $viewdata = array(); 

    function __construct() 
    { 
     parent::__construct(); 
     Accesscontrol_helper::is_logged_in_super_user(); 
     $this->load->model('members_model'); 
     // $this->load->library('session'); 
     // $this->load->database(); 
     // ^- if not already autoloaded 
     $member = $this->session->userdata('email_address'); 
     $this->viewdata['pagecontent'] = $this->members_model->get_profile($member); 
    } 
} 

次に、あなたの他のコントローラの方法で、あなただけのクラスプロパティの$ this - > ViewDataを、元を呼び出します。

function index() 
{ 
    $this->load->view('myview',$this->viewdata); 
} 

そしてmyview.phpで、それをアクセス:

echo $pagecontent; 
1

をあなたには、いくつかのスコープの問題を抱えているように見えます。変数は__construct()メソッドの内部で宣言されているので、それを参照できるのはそのメソッドだけです。すべてのメソッドでそれらにアクセスできるようにするには、それらをクラス変数にする必要があります。

このような何か試してください:あなたは少し違っこれを設定することもできますが、うまくいけば、あなたが得る$this->member

class Your_class extends CI_Controller { 

    protected $member; 
    protected $viewdata; 

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

     Accesscontrol_helper::is_logged_in_super_user();  

     $this->load->model('members_model'); 

     $this->member = $this->session->userdata('email_address'); 
     $this->viewdata['pagecontent'] = $this->members_model->get_profile($member); 
    } 
} 

その後、あなたはこのようなあなたの他の方法で$member$viewdataを参照することができますが変数とスコープに関する考え方。

関連する問題