0

コントローラーのほぼすべての関数で呼び出される$dataがいくつかあります。この$data__construct関数で作成し、呼び出された関数で$dataと組み合わせる方法はありますか? 例:

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

        $this->load->model('ad_model', 'mgl');
        $this->load->model('global_info_model', 'gi');
        $this->load->model('user_model', 'um');        
        $this->load->library('global_functions');
        $this->css = "<link rel=\"stylesheet\" href=\" " . CSS . "mali_oglasi.css\">";
        $this->gi_cat = $this->gi->gi_get_category();
        $this->gi_loc = $this->gi->gi_get_location();        
        $this->gi_type = $this->gi->gi_get_type();       
        }

    function index() {     
        $count = $this->db->count_all('ad');        
        $data['pagination_links'] = $this->global_functions->global_pagination('mali_oglasi', $count, 2);

        $data['title'] = "Mali Oglasi | 010";
        $data['oglasi'] =  $this->mgl->mgl_get_all_home(10);
        $data['loc'] = $this->gi_loc;
        $data['cat'] = $this->gi_cat;
        $data['stylesheet'] = $this->css;
        $data['main_content'] = 'mali_oglasi';

    $this->load->view('template',$data);
    }

$data['loc']$data['cat']$data['stylesheet']__constructに入れたい場合は、 $this->data$this->load->view( 'テンプレート',$データ);

この2つを組み合わせる方法はありますか?

4

2 に答える 2

3

コントローラーにプライベート メンバーを追加し、必要に応じてコンストラクターで設定します。

private $data;

function __construct() {
    ...
    $this->data = array(...);
    ...
}

次に、同じコントローラー クラス内のすべてのコントローラー アクションで、このプライベート メンバーにアクセスできます。

配列結合演算子 ( +) Docsを使用して、2 つの配列をマージできます。

$data = $this->data + $data;

こちらもご覧ください: Properties Docs

于 2012-09-30T10:44:54.310 に答える
2

確かに、あなたはこのようにすることができます、

class ControllerName extends CI_Controller {

    private $_data = array();

    function __construct()
    {
        $this->_data['loc'] = this->gi_loc;
        $this->_data['cat'] = this->gi_cat;
        $this->_data['stylesheet'] = this->css;
    }

    function index()
    {
        // Your data

        // Merge them before the $this->load->view();
        $data = array_merge($this->_data, $data);
    }
}
于 2012-09-30T10:45:43.997 に答える