布局
对于所有页面,当我加载数据时,可以工作,但模型和控制器不工作。我指定的其他模型工作。我的意思是,一个控制器和布局模型适用于所有页面,但其他页面有自己的模型和控制器。一个控制器用于所有页面,一个用于每个页面。
<?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!';
}
}