シンプルなテンプレート システムを使用して、CI で Web サイトを構築しています。
これは私の基本的なテンプレートです:
$this->load->view('includes/header');
$this->load->view($main_content);
$this->load->view('includes/footer');
ビューに渡したい一連の変数があり、次のようにできることがわかっています。
$data['title'] = 'title goes here';
$data['main_content'] = 'name of page goes here';
$this->load->view('template', $data);
ここまでは順調ですね。しかし、上記の変数セットにデフォルト値を持たせたいので、テンプレートをロードするたびにセット全体を宣言する必要はありません。
私が思いついた解決策は、次のように、メイン コントローラーの下で public static 変数を宣言することでした。
public static $default_data = array(
'title' => 'Generic Title Goes Here',
'main_content' => 'home_view'
);
次に、次のようにビューをロードできます。
$data = Home::$default_data;
$data['main_content'] = 'member_login_view'; // I can now declare only the relevant variables. all the rest will have the default values
$this->load->view('includes/template', $data);
このメソッドは正常に機能していますが、1 つ問題があります。デフォルトとして設定したい変数の一部が静的ではありません。たとえば、ヘッダーには、Web サイトの登録ユーザー数とデータベース内の製品数を示す統計行があります。だから私はそれを
$data['stats'] = $this->products_model->get_stats();
そのような変数にデフォルト値を設定する方法はありますか?そのため、各ページが読み込まれる前にモデルでメソッドを呼び出す必要はありませんか?