Codeigniterコントローラからのメソッドの移動

私は私のCodeigniterコントローラの一つでこれを得た。しかし、私はそれが他のコントローラにアクセスできるようにしたいと思いますが、$ thisキーワードは異なる意味を持ちますが、ロードされているコントローラを参照する必要があります。

function checkSecurity($user, $page)
{
    if($this->mod_backend->canUserAccessPage($user, $page))
    {
        $this->load->view('header');
        $this->load->view($page, $data);
        $this->load->view('footer');       
    }
    else
    {
        $this->load->view('header');
        $this->load->view('unauthorised', $data);
        $this->load->view('footer');               
    }
}
0

1 答え

メソッドがアプリケーション内のすべてのコントローラにアクセスできるようにする必要がある場合は、 MY_Controller.php ファイルにクラスを実装することができます。その後、すべてのコントローラは CI_Controller <コード>。

たとえばMY_Controller.php

<?php

class My_Controller extends CI_Controller{
    public function checkSecurity($user, $page)
    {
        if($this->mod_backend->canUserAccessPage($user, $page))
        {
            $this->load->view('header');
            $this->load->view($page, $data);
            $this->load->view('footer');       
        }
        else
        {
            $this->load->view('header');
            $this->load->view('unauthorised', $data);
            $this->load->view('footer');               
        }
    }

}

そしてあなたのコントローラーでこのクラスを拡張する必要があります:

<?php

class Other_Controller extends My_Controller{
   //Do the stuff

   //You can call your function in every controller
   $this->checkSecurity('my_user', 'my_page');


}
2
追加された
ええ、あなたのコントローラコールparent :: __ construct()で覚えておいてください。
追加された 著者 m4t1t0,
このようにするのは、MY_Controllerコンストラクターで、ページをロードするコントローラーに関係なく、ページがロードされるたびに発生させることができることです。
追加された 著者 Rick Calder,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com