У меня есть следующий код в контроллере:
<?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);
}
}
?>
Это, так или иначе, прекрасно работает для моей домашней страницы.Он анализирует переменные и никаких проблем не возникает.Однако на странице «Планировщик» я получаю ошибки:
Сообщение: отсутствует аргумент 1 для Student :: planner ()
Сообщение: неопределенная переменная: data
Сообщение: указан неверный аргумент для foreach ()
Я совершенно уверен, что получаю эти ошибки, потому что функция почему-то не получает массив $data
.Я также читал в документации по CI, что третий сегмент в URL передается в качестве аргумента, и в этом случае третий сегмент не существует, поэтому ничего не передается.Тем не менее, документы CI не сказали мне, как я мог передать свой массив $data
из функции index()
в мою функцию planner()
.Мне также интересно , почему функция home работает нормально, без ошибок.