0

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

                等...
            }
        }
    }
4

1 に答える 1