私は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['説明'] = ...
等...
}
}
}