Многоуровневый список с CodeIgniter



Я недавно работаю с 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;?>
673   2  

2 ответов:

Вы не изменяете $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, а затем вы сможете получить к ним доступ в своих представлениях.

Ваш контроллер настраивает $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;?>

Comments

    Ничего не найдено.