Многоуровневый список с CodeIgniter - PullRequest
3 голосов
/ 17 ноября 2011

Я недавно работаю с CodeIgniter и PHP. Я пытаюсь выполнить простую задачу - показать многоуровневое меню. Допустим, у меня есть ученик и таблица состояния. Я хочу показать, какие студенты находятся под каким статусом (старший, младший и т. Д.). Но я получаю эту ошибку:

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: views/sview.php

Line Number: 31

В строке 31 у меня есть

<?php echo $status->statusname;?>

Контроллер:

// ....
$data['status'] = $this->status_model->get_students();
$this->load->view('sview', $data);

Модель:

function get_students(){

    $s = $this->db->get('status');

    foreach ($s->result() as $status){

        $students = $this->db->get_where('student', array('status_id'=>$status->id));
        $status->students = students->result();
    }

    return $s;
}

вид:

<?php foreach($s as $status):?>
    <h4><?php echo $status->statusname;?></h4>
    <?php foreach($status->student as $student):?>
        <?php echo $student->studentname; ?>
    <?php endforeach;?>
<?php endforeach;?>

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Вы не изменяете $s в цикле в get_students(), поэтому он просто возвращает исходный запрос всех записей из таблицы status .Вам также не хватает '$' для переменной $students в вашем цикле.

Попробуйте эту модель:

function get_students()
{
    $s = $this->db->get('status');

    $statuses = array();

    foreach ($s->result() as $status)
    {
        $students = $this->db->get_where('student', array('status_id'=>$status->id));
        $status->students = $students->result();

        $statuses[] = $status;
    }

    return $statuses;
}

, которая вернет измененные переменные $status в$statuses массив, а затем вы можете получить к ним доступ в ваших представлениях.

0 голосов
/ 17 ноября 2011

Ваш контроллер настраивает $data['status'] со всеми различными статусами, на которые он похож.Попробуйте изменить следующее на ваш взгляд:

<?php foreach($status as $s):?>
    <h4><?php echo $s->statusname;?></h4>
    <?php foreach($s->student as $student):?>
        <?php echo $student->studentname; ?>
    <?php endforeach;?>
<?php endforeach;?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...