我在控制器中有以下代码:
<?php
class Student extends CI_Controller
{
function index()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_index', $data);
$this->parser->parse('include/footer', $data);
}
function planner()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_cal', $data);
$this->parser->parse('include/footer', $data);
}
}
?>
如您所见,这里有很多重复。基本上都是。我已经将变量放入模型中,因此我只需每次调用模型函数,而不是将整个 $data 数组放在每个函数的开头。无论如何,我尝试通过执行以下操作来减少此处的重复:
<?php
class Student extends CI_Controller
{
function index()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
switch($this->uri->segment(2))
{
case '': $this->home($data); break;
case 'planner': $this->planner($data); break;
}
$this->parser->parse('include/footer', $data);
}
function home($data)
{
$this->parser->parse('student/student_index', $data);
}
function planner($data)
{
$this->parser->parse('student/student_cal', $data);
}
}
?>
不知何故,这对我的主页很好。它解析变量,没有任何问题。但是,在“计划者”页面上,出现错误:
消息:Student::planner() 缺少参数 1
消息:未定义变量:数据
消息:为 foreach() 提供的参数无效
我很确定我得到了这些错误,因为该函数以某种方式没有接收到$data
数组。我还在 CI 文档中读到,URL 中的第三段作为参数传递,在这种情况下,第三段不存在,因此没有任何传递。但是,CI 文档没有告诉我如何将$data
数组从index()
函数传递到planner()
函数。我也想知道为什么home 功能可以正常工作,没有错误。