2

コントローラーにデータを繰り返し貼り付ける代わりに、「ナビゲーション」と呼ばれるヘルパーを作成しようとしています。これは、すべてのコントローラーに使用され、ナビゲーションサブビューに読み込まれます。

現在、すべてのコントローラーに次のコードを追加しています。

// Get Subcategories
$subcat1 = $this->Categories_model->get_artstyles();
$subcat2 = $this->Categories_model->get_artsubjects();
$subcat3 = $this->Categories_model->get_media();
$subcat4 = $this->Categories_model->get_photography();

$this->view_data['sub_cat1'] = $subcat1->result();
$this->view_data['sub_cat2'] = $subcat2->result();
$this->view_data['sub_cat3'] = $subcat3->result();
$this->view_data['sub_cat4'] = $subcat4->result();

ですから、私がやりたいのは、これを切り詰めて、そのデータをヘルパーとしてロードすることです。したがって、最終的には、各コントローラーで行うのはヘルパーをロードすることだけです。

これが間違った方法だと思われる場合は、CIとその方法についてまだ少し確信が持てないので、アドバイスしてください。

これらの4つのサブキャット変数はすべてグローバル変数になりたいと考えています。

4

2 に答える 2

2

このデータがすべてのコントローラーに関連している場合は、次のようにCI_Controllerを拡張する必要があります。

class MY_Controller extends CI_Controller {
     protected $view_data;

     public function __construct() {
         parent::__construct();         
                 $this->load->helper('nav');
                 $this->view_data = load_navigation();
     }
}

このファイルをcoreディレクトリ内に配置し、次のようにすべてのコントローラーを拡張します。

class CONTROLLER_NAME extends MY_Controller 

詳細はこちらをご覧ください

ヘルパー機能の場合:

function load_navigation() {
         $CI =& get_instance();
         $CI->load->model('Categories_model');
         $result['sub_cat1'] = $CI->Categories_model->get_artstyles()->result();
         $result['sub_cat2'] = $CI->Categories_model->get_artsubjects()->result();
         $result['sub_cat3'] = $CI->Categories_model->get_media()->result();
         $result['sub_cat4'] = $CI->Categories_model->get_photography()->result(); 
         return $result;

}

編集:

変数をビューにロードするには、次のようにします。

$data['view_data'] = $this->view_data;
$this->load->view('MY_VIEW', $data);

ビューでは、次のようにアクセスできます$view_data

于 2012-06-11T09:54:38.830 に答える
0

htmlテンプレートシステムを使用して、デフォルトのhtmlテンプレートに標準で含めることができます。

WilliamsConceptsのテンプレートライブラリを使用しています

于 2012-06-11T09:43:31.800 に答える