0

我有我的控制器

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() 控制器中复制所有内容以使网站显示相同。

有什么办法不这样做吗?

4

2 回答 2

0

您可以将这两行传递给任何控制器,它们将显示相同的模板。

$data['navigation'] = $this->content->getNav();
$data['pagename'] = $this->content->get_pagename($page);

如果您仍然不明白,请尝试使用此库

https://github.com/philsturgeon/codeigniter-template

于 2013-05-23T18:27:40.737 回答
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 创建任意数量的控制器。

于 2013-05-23T18:46:51.333 回答