0

レイアウト

データをロードするとすべてのページで機能しますが、モデルとコントローラーは機能しません。私が割り当てた他のモデルは動作します。つまり、すべてのページのレイアウトの 1 つのコントローラーとモデルですが、他のページには独自のモデルとコントローラーがあります。すべてのページに 1 つのコントローラーと、各ページに 1 つのコントローラー。

<?php foreach ($sidebars as $row):  ?>
<tr><td><?php echo $row->title; ?> </td></tr>
<?php endforeach; ?>

<div id="main" role="main" class="content">
            {content}------here this show my pages content other model and controller
</div>

コントローラ

コントローラーでページをロードします

他のページを再度読み込む場合は、入力する必要があります

$this->load->model('side_model');
            $data['sidebars'] = $this->side_model->get_sidebar();

これは私のページコントローラーの1つですが、言及していない場合は他のコントローラーが機能しないため、すべてのページのコントローラーとして作成したいのですが、コードの上の各ページコントローラーで言及したくありません

"<?php"
    public $layout = 'default'

    public function index()
    {
        $this->load->model('side_model');
        $data['sidebars'] = $this->side_model->get_sidebar();   
        $this->load->view('Layout/default',$data);
    }

モデル

function get_sidebar(){
    $this->db->select('*');
    $this->db->from('side');
    $this->db->where('active','1');
    $this->db->order_by('added_date', 'DESC');

    return $this->db->get()->result();

すべてのページに多くの機能を持つ 1 つのメイン コントローラーとモデルを作成するにはどうすればよいですか?

4

2 に答える 2

1

core/MY_Controller.php というファイルを作成します。

    class MY_Controller extends CI_Controller {

        public function __construct(){
            parent::__construct();
            $this->load->model("side_model");
            $this->data["sidebars"] = $this->side_model->get_sidebar();
        }

        protected function get_html_meta($meta){
            // method will be available for all extending controllers
            return ucfirst($meta)." ".date("Y-m-d");
        }

    }

これからは、CI_Controller ではなく MY_Controller を拡張する必要があります。既存のコントローラーでは、ビューで使用できる変数を渡すことができます (使用法とそのスコープ$this->dataの例をいくつか追加しました:$this->data

class your_controller extends MY_Controller {

    public function index(){
        $this->data["html_meta"] = $this->get_html_meta("this is meta");
        $this->data["html_title"] = "Hello World!";
        $this->load->view('Layout/default',$this->data);
    }

}

注:とは異なり$this->data、 のスコープ$dataは、宣言した関数内にのみあります。

グローバル モデルに関しては、MY_Controller コンストラクター (または autoload.php) がモデルをロードすると、他のコントローラーが MY_Controller を拡張している限り、モデルを呼び出すことができます。

于 2013-03-29T08:44:38.303 に答える
0

独自のコントローラーを作成する

class ParentController extends CI_Controller {

    public function index()
    {
        echo 'Hello World!';
    }
}

class Blog extends ParentController {

    public function index()
    {
        echo 'Hello World!';
    }
}
于 2013-03-29T08:34:03.753 に答える