了解codeigniter基本控制器结构

时间:2013-06-26 20:25:34

标签: codeigniter base-class

以下是我的Codeigniter网站目前如何运作的一个工作示例:

型号:

<?php
class Default_model extends CI_Model
{

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }


    function get_link()
    {
        $query = $this->db->query('SELECT * FROM links LIMIT 5');
        return $query->result();
    }

控制器:

<?php
class Home extends CI_Controller {

    public function index()
    {
        $this->load->model('segment1/Page_model');
        $data['link'] = $this->Page_model->get_link();
        $this->load->view('page_view', $data);
    }
}

查看:

<h2>Link</h2>
<ul>
<?php if (isset($link)):?>
    <?php foreach ($link as $row):?>
        <li><a href="<?=$row->url?>"><?=$row->link?></a></li>
    <?php endforeach;?>
<?php endif;?>
</ul>

我想在上面的例子中开始使用基本控制器,虽然我已经按照一些在线示例进行操作 - 但我不能完全理解它,我会感激一些指导......

  1. 我自动加载模型,没问题
  2. 视图文件仍为
  3. 我改变了config.php文件
  4. 控制器:

    <?php
    class Home extends Main_Controller {
    
        public function index()
        {
            $this->load->model('segment1/Page_model');
            $this->load->view('page_view', $data);
        }
    }
    

    MY_Controller

    <?php
    class MY_Controller extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
        }
    }
    

    现在,这就是我陷入困境的地方 - 我无法弄清楚Main_Controller的确切内容,以及它的结构......

    Main_Controller:

    <?php
    class Main_Controller extends MY_Controller
    {
        function __construct()
        {
            parent::__construct();
            //
            // WHAT GOES IN HERE?
            // SERIOUSLY, HELP!
            //
        }
    }
    

    显然,原始控制器中缺少一大数据......

    $data['link'] = $this->Page_model->get_link();
    

    这一切是如何结合的?

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了您的问题,但如果您想避免重复此行:

$data['link'] = $this->Page_model->get_link();

你可以做的是把它放在构造函数中并创建一个可以存储它的公共变量。

即。 的 Main_Controller:

<?php
class Main_Controller extends MY_Controller
{
    public $link;

    function __construct()
    {
        parent::__construct();
        $this->load->model('segment1/Page_model');
        $this->link = $this->Page_model->get_link();
    }
}

<强>控制器:

<?php
class Home extends Main_Controller {

    public function index()
    {
        $this->load->view('page_view', array('link' => $this->link));
    }

    public function another_page()
    {
        // you can keep using the value assigned to link in other
        // methods without having to call Page_model->get_link() everytime
        $this->load->view('page_view', array('link' => $this->link));
    }
}