1

以下是我的 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 文件

控制器:

<?php
class Home extends Main_Controller {

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

MY_控制器

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

现在,这就是我被卡住的地方 - 我无法完全弄清楚 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();

这一切是如何联系起来的?

4

1 回答 1

1

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

$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));
    }
}
于 2013-06-26T20:45:10.520 回答