0

以下が可能かどうかはわかりません。そうでない場合は、他の提案をいただければ幸いです。

ほとんどすべてのコントローラーで、いくつかのデフォルト ビューをロードします。たとえば、ヘッダー、フッター、メニュー。

ビューごとに特定の変数を自動ロードしたいと思います。

ヘッダーを例にとると。ヘッダーには、常に$cssスクリプトの配列と$javascriptファイルの配列をロードします。

$javascript[] = 'js/jquery.js'; $javascript[] = 'js/jqueryui.js';

さらに、現在のページ ロジックによっては、$javascript変数に別の JavaScript ファイルを追加することもできます。

$javascript[] = 'js/custom.js';

次に、理想的には、これらの変数がデータとしてビューのロードに自動的に挿入されるようにしたいと考えています。

つまり、次のように呼び出したいだけです。

$this->load->view('header');

これはどのように達成できますか?

4

3 に答える 3

1

MY_Controllerを作成し、そこにパブリック配列を追加してから、MY_Controllerから拡張します。

class MY_Controller extends CI_Controller  {
     public $data;

     function __construct() {
         parent::__construct();
         $this->data['MYVAR'] = 'Something';
     }
}

他のコントローラーでは、このようにします

class SomeClass extends MY_Controller {
    function __construct () {
        parent::__construct();
    }

     function index () {
         $this->data['SomeOtherVar'] = 'xxx';
         $this->load->view('viewname', $this->data);
     }
  }
于 2012-12-29T17:01:45.263 に答える
0

コントローラーで $this->load->vars を使用できます。これを my_controller で使用し、すべてのコントローラーは MY_Controller から拡張されます。たとえば

<?php
    class MY_Controller extends Controller{
        public function __construct(){
            parent::__construct();
            $this->setGlobalViewVariables();
        }

        public function setGlobalViewVariables(){
            $result = array();
            $result['value1'] = 'value1';
            $result['value2'] = 'value1'; 
            $this->load->vars($result);
        }
    }
?>
于 2012-12-29T16:23:33.023 に答える
0

このためのフックを作成する必要があります。非常に簡単です

于 2012-12-29T16:30:07.057 に答える