0

私のCIコントローラーには、次の3つの機能があります。

function _temp ($view,$data="") {
  $this->load->view('temp/nm-header',$data);
  $this->load->view($view,$data);
  $this->load->view('temp/footer',$data);
}

function _qs($val) {
  return $this->session->userdata($val);
}

function _qp($val) {
  return $this->input->post($val);
}

私が持っているすべてのコントローラーでこれらのメソッドをコピーして貼り付けるのではなく、このための中央コントローラーが必要です。ライブラリを作成することでうまくいくでしょうか?もしそうなら...

$ci =& get_instance

上記の変数を、ライブラリクラスにあるすべてのメントで使用できるようにするにはどうすればよいですか?

ありがとう。

4

2 に答える 2

4

ライブラリを作成する必要はありません。代わりに、次のようMY_Controllerに、共通メソッドに対して呼び出される基本コントローラーを作成し、そこから他のコントローラーを拡張します。

マイコントローラー:

class MY_Controller extends CI_Controller {

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

    function _temp ($view,$data="") {
        $this->load->view('temp/nm-header',$data);
        $this->load->view($view,$data);
        $this->load->view('temp/footer',$data);
    }

    function _qs($val) {
        return $this->session->userdata($val);
    }

    function _qp($val) {
        return $this->input->post($val);
    }

}

共通メソッドにアクセスしたいその他のコントローラー:

class Some_controller extends MY_Controller {

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

    // _temp(), _qs(), and _qp() are now all available to any controller
    // that extends MY_Controller

}
于 2012-06-10T15:18:40.133 に答える
0

独自のコアクラスを作成し、CI-oneを拡張できます。 http://codeigniter.com/user_guide/general/core_classes.html

于 2012-06-10T15:14:38.927 に答える