0

布局

对于我加载数据时的所有页面,但模型和控制器不起作用。我指定的其他模型工作。我的意思是,一个控制器和所有页面的布局模型,但其他页面有自己的模型和控制器。一个控制器用于所有页面,一个控制器用于每个页面。

<?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();

这是我的一个页面控制器,它可以工作,但是如果不提及其他控制器,那么它不起作用我想让它成为每个页面的控制器,我不想在上面的代码中的每个页面控制器中提及

"<?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();

如何为所有页面制作一个具有多种功能的主控制器和模型?

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");
        }

    }

从现在开始,您应该扩展 MY_Controller 而不是 CI_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 回答