我有我的控制器
class Page extends CI_Controller {
public function id() {
$this->load->model('content');
$page = $this->uri->segment(3, 0);
if($page == 0)
$page = $this->content->get_default_page($page);
$data['navigation'] = $this->content->getNav();
$data['pagename'] = $this->content->get_pagename($page);
$data['content'] = $this->content->get_content($page);
$this->load->view('main', $data);
}
}
现在我来解释一下。我得到导航,和导航文本从mysql (id, navName, navText)。然后我返回这些元素在views/main_view.php url: http://abc.com/page/id/1等…
现在我需要创建其他控制器,如mySuperDuperModule,它有一些功能,而不仅仅是文本。
问题是,如果我创建新的控制器像画廊(),我需要复制所有的东西从Page()控制器使网站显示相同。
有没有办法不这样做呢?
可以在/application/core/MY_Controller.php下创建基本控制器这里MY_是为/application/config/config.php
中的$config['subclass_prefix']指定的值。class MY_Controller extends CI_Controller
{
protected $data;
public function __construct()
{
parent::__construct();
$this->data = array();
}
public function loadPage($page)
{
$this->load->model('content');
if($page == 0)
$page = $this->content->get_default_page(); // I hope this function will give default page from database table. (A Change from your code)
$this->data['navigation'] = $this->content->getNav();
$this->data['pagename'] = $this->content->get_pagename($page);
$this->data['content'] = $this->content->get_content($page);
}
}
你在/application/controllers/Page .php中修改过的Page类
class Page extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function id()
{
$page = $this->uri->segment(3, 0);
parent::loadPage($page);
$this->load->view('main', $this->data);
}
}
和你的新画廊控制器可以在/application/controllers/gallery.php
class Gallery extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function id()
{
$page = 10; // Assuming gallery page index is 10 in database table OR you can change any logic here.
parent::loadPage($page);
$this->load->view('main', $this->data);
}
}
你可以通过扩展MY_Controller来创建任意多的控制器
您可以将这两行传递给任何控制器它们将显示相同的模板。
$data['navigation'] = $this->content->getNav();
$data['pagename'] = $this->content->get_pagename($page);
如果你仍然不明白,试着使用这个库
https://github.com/philsturgeon/codeigniter-template