如何在布局/默认情况下将控制器和模型设置为在所有页面中加载


How to set the controller and model in layout/default to load in all pages

布局

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

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

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

创建一个名为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_Controllel,在您现有的控制器中,您现在可以传递视图可用的可变$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_Coontroller,就可以调用该模型。

编写自己的控制器

class ParentController extends CI_Controller {
    public function index()
    {
        echo 'Hello World!';
    }
}
class Blog extends ParentController {
    public function index()
    {
        echo 'Hello World!';
    }
}