私はMY_Controller
親クラスとして持っています。ビューをロードするだけで、いくつかのデータをビューに渡します。MY_Controller
私のアプリケーションは、ビューに渡す必要がある情報を含むいくつかの変数を設定するだけの、いくつかのコントローラーを拡張した単純な Web サイトです。
私は、他のコントローラーとは少し異なるコントローラーを1つ持っています。データベースから取得したビューに、より多くの情報を渡す必要があります。その場合はどうすればいいですか?
ご覧のとおり、そのコントローラーでインデックス関数全体をオーバーライドできますが、これは DRY ルールに違反しています。唯一の違いは、すべてのビューに渡される配列にさらにいくつかの値を設定することだからです。または、親コントローラーにさらにいくつかの LOC を書き込むこともできますが、その特定の子コントローラーがそのコードを必要とする唯一のコントローラーであるため、それは良い習慣ではないと思います。
私はしばらくそれで苦労してきました.正しい方向に私を向けることができればうれしいです.
私のコントローラー:
クラス MY_Controller は CI_Controller を拡張します { $style='', $contents = 配列(), $title=''; //等々 公開関数 index() { $data['style'] = $this->style; $data['title'] = $this->title; $this->load->view('header',$data); foreach($this->contents as $row) { $this->load->view($row,$data); } $this->load->view('footer',$data); } }
これまでのギャラリーコントローラー
クラス Gallery は MY_Controller を拡張します { $style = 'galeria.css', $title = 'ガレリア', $contents = array('content_gallery'); // $gallery が null の場合、リスト内のすべてのギャラリーのみを表示し、 //それ以外の場合は、選択したギャラリーをそのリストの下にコンテンツとともに表示します 公開関数インデックス($gallery = NULL) { $data['galleries'] = $this->gallery_model->get_all_active_galleries(); //名前とID if( $ギャラリー != NULL ) { $data['name'] = ... $data['説明'] = ... 等... } } }