我有我的控制器
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)获取导航和导航文本。 然后我在url中的views / main_view.php中返回这些元素,如:http://abc.com/page/id/1等......
现在我需要创建像mySuperDuperModule这样的其他控制器,它们的功能不仅仅是文本。
问题是,如果我创建像Gallery()这样的新控制器,我需要从Page()控制器复制所有东西,以使网站显示相同。
有没有办法不这样做?
答案 0 :(得分:0)
您可以将这两行传递给任何控制器 它们将显示相同的模板。
$data['navigation'] = $this->content->getNav();
$data['pagename'] = $this->content->get_pagename($page);
如果您仍然不明白尝试使用此库
答案 1 :(得分:0)
您可以在/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
中修改过的网页类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来创建任意数量的控制器。