2011-08-04 19 views
0

私はCI 2.xコアフォルダに入れたいコードブロックを持っていて、他のすべてのコントローラによって拡張されるベースコントローラを介して再利用したいと思います。ここでCodeIgniterコントローラの簡略化

は、すべてのコントローラに表示され、私はどこかそれ以上の中央に移動するコードは次のとおりです。

$data['navigation'] = generate_navigation(); // helper function 
$data['country'] = code2country(); // helper function 
$data['langs'] = $this->select_country_model->get_langs(); 

// Get copy and images for page 
$query = $this->common_model->get_content('markets', 'architectural'); 

// Load title, description and keywords tags with data 
foreach ($query as $row) { 
    $data['title'] = $row->page_title; 
    $data['description'] = $row->description; 
    $data['keywords'] = $row->keywords; 
} 

私は私のベースコントローラ(MY_controller.php)でこれを入れて、その後にデータを送信するにはどうすればよいです拡張コントローラからの私の見解。まだ$data[] =$this->load->view('whatever', $data)を使用していますか?

答えて

1

うん、あなたはまだ$data変数に沿ってこれを渡すことができますが、このような他のコントローラからアクセスできるように、あなたはそれを割り当てる必要があります:

class MY_Controller extends CI_Controller { 

    var $data = array(); 

    function __construct() 
    { 
     $this->load->model('select_country_model'); 
     $this->load->model('common_model'); 

     $this->data['navigation'] = generate_navigation(); // helper function 
     $this->data['country'] = code2country(); // helper function 
     $this->data['langs'] = $this->select_country_model->get_langs(); 

     $query = $this->common_model->get_content('markets', 'architectural'); 

     foreach ($query as $row) { 
      $this->data['title'] = $row->page_title; 
      $this->data['description'] = $row->description; 
      $this->data['keywords'] = $row->keywords; 
     } 
    } 
} 

それからちょうどあなたのコントローラーを拡張MY_Controllerとなり、$dataには$this->dataと表示されます。

+0

私は$ this-> load-> view( 'whatever'、$ this-> data)を実行しますか? – sehummel

+0

私のコードの一部を更新しました。あなたが '$ data'を使いたいときはいつでも' $ this-> data'でそれを参照する必要があります。これは、メインコントローラとそれを使って拡張されたすべてのコントローラに適用されます。 –

+0

パーフェクト。ありがとう、クリス。 – sehummel