Codeigniter:将数据传递给包含

Codeigniter: passing data to an include

我知道如何通过控制器中的数据数组将数据传递到页面视图,但我使用的模板独立于控制器加载导航视图,如下所示:

echo isset($nav) ? $this->load->view($nav) : '';

我想将动态数据传递给导航视图,但我不想通过控制器数据数组为每个页面单独加载它,这不会很枯燥。有没有办法通过模板中的代码传递它?

$this->load->view({template}, {vars});

{template} - 模板文件名
{vars} - 模板数组

示例:

$vars[[=​​24=]] = 'Hello World';
$this->load->view('test', $vars);

此代码从 application/views/test.php 加载模板并将使用 $title 变量。

在模板中使用以加载其他模板:

$this->view('other');

下一个解决方案:

型号:

class Model_Index extends CI_Model {

    function __construct() {
        parent::__construct();
    }
    function get_data() {

        $sql = "...";

        $query = $this->db->query($sql);

        return ($query->num_rows()>0) ? $query->result() : false;

     }
}

查看:

$this->ci =& get_instance();
$this->ci->load->model('model_index');
$data = $this->ci->model_index->get_data();

print_r($data);

感谢您对问题的优雅解决!

经过更多的思考,我想出了另一种不太全面的处理方法,即在控制器的开头声明 $data 变量,然后在构造函数中添加公共数据元素。然后,您可以在视图方法中将特殊视图数据元素添加到同一个数组,然后将整个批次发送到视图。这节省了在每个视图方法中添加公共数据元素,尽管它显然只适用于该控制器加载的视图。不过有用。