我知道如何通过控制器中的数据阵列将数据传递到页面视图,但我使用的模板可以独立于控制器加载导航视图,如下所示:
echo isset($nav) ? $this->load->view($nav) : '';
我想将动态数据传递到导航视图,但我不希望通过控制器数据阵列为每个页面单独加载它,这不会非常干。有没有办法通过模板中的代码传递它?
答案 0 :(得分:1)
下一个解决方案:
型号:
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);
答案 1 :(得分:0)
$this->load->view({template}, {vars});
{template} - 模板文件名
{vars} - 模板数组
样品:
$ vars [' title'] =' Hello World';
$ this-> load-> view(' test',$ vars);
此代码从application / views / test.php加载模板,并将使用$ title变量。
在模板中使用以加载其他模板:
$this->view('other');
答案 2 :(得分:0)
感谢这个问题的优雅解决方案!
经过更多的脑力破坏后,我想出了另一种处理它的方法,通过在Controller的开头声明$ data变量然后在构造函数中添加公共数据元素,以一种不太全面的方式处理它。然后,您可以将特殊视图数据元素添加到view方法中的同一个数组中,并将整个批次发送到视图。这节省了在每个视图方法中添加公共数据元素,尽管它显然只适用于该Controller加载的视图。虽然有用。