多くの異なるページに読み込まれる一般的に繰り返されるhtmlスニペットを処理する方法の問題を解決する方法はたくさんあります。
以下に示すrender_page()
機能のように、各コントローラにヘルパー機能を追加する方法があります。 [注:引数$ dataを経由して渡されるべきロードするビューのいずれかで必要とされる任意の動的データ。このと他の場所で同じコントローラで
public function index(){
//do stuff including setting $data as needed
$this->render_page('some_view', $data);
}
問題
protected function render_page($main_view, $data=null){
$this->load->view('top_view', $data);
$this->load->view('menu_view');
if(isset($main_view)){
$this->load->view($main_view);
}
$this->load->view('footer_view');
}
すべてのコントローラーでrender_page()
を定義する必要があります。これを回避するには、同様の方法で動作するカスタムライブラリ(クラス)のrender_page()
アイデアを使用してください。その後、そのライブラリを自動ロードし、必要なコントローラでrender_page()
メソッドを使用します。
あなたは、このようなライブラリを作り、次のようViewmaster
が、あなたは実装の詳細を把握するために、私はあなたにそれを残しておきます
public function index(){
//do stuff including setting $data as needed
$this->viewmaster->render_page("some_view", $data);
}
を(それが自動的にロードされたと仮定し)コントローラでそれを使用することになり、それを命名した場合Viewmaster
クラスの
"トップビュー"とはどういう意味ですか?理想的には、ログインビューは1回だけ呼び出されるべきです。ユーザーがログインすると、再び表示されません。 これはセッションを介して処理することができます – user1587439
ユーザーはログに記録されていなくてもサイトを実行できますが、ログインまたは登録を決定すると常にフォームが上部に表示されます。私は彼が提出をヒットするときに呼び出されるログインコントローラを行うことを考えていた。 –