Сообщение: неопределенная переменная: на странице просмотра - PullRequest
0 голосов
/ 28 февраля 2012

Я все еще новичок в PHP и концепции MVC.Я пытался продублировать учебник по новостям CI (http://codeigniter.com/user_guide/tutorial/news_section.html), при использовании своей собственной базы данных и переписывании кода.

У меня не получилось.

Вот мой контроллер:

    class Main extends CI_Controller
{

public function __construct()
{
    parent::__construct();

    $this->load->helper('url');
    $this->load->library('tank_auth');
    $this->load->model('structures_model');
}

public function structures()
{
    $this->load->model('structures_model');
    if (!$this->tank_auth->is_logged_in()) {
        redirect('/auth/login/');
    } else {
        $data['structures_all'] = $this->structures_model->get_structures();
        $this->load->view('templates/header', $data);
        $this->load->view('templates/navmain', $data);
        $this->load->view('structures', $data);
        $this->load->view('templates/footer', $data);
    }
}

Вот моя модель (структура_модель)

<?php
class Structures_model extends CI_Model {

public function __construct()
{
    $this->load->database();
}

public function get_structures()
{
    $query = $this->db->get('structures');
    return $query->result_array();
}

}

И мой взгляд:

<?php foreach ($structures_all as $structures_info): ?>
<h2>Structures</h2>
<div id="main">
    <?php echo $structures_info['str_name'] ?>
</div>
<?php endforeach ?>

Ошибка, которую я получаю, является общей:

A PHP Error was encountered<
Severity: Notice
Message: Undefined variable: structures_all
Filename: main/structures.php
Line Number: 2

Я в растерянности. Я смотрел на все подобные ошибки, которые люди получали, но не могу понять, почему именно не определен массив struct_all. Разве он не должен быть создан в функции контроллера, где я установил:

$data['structures_all'] = $this->structures_model->get_structures();

Чего мне не хватает?

1 Ответ

1 голос
/ 28 февраля 2012

Лучший способ отладить это - присвоить $data['structures_all'] определенное значение массива, скажем: $data['structures_all'] = array('foo' => 'bar');

Доступна ли переменная $structures_all в представлении сейчас? Если он доступен, вы знаете, что $this->structures_model->get_structures(); возвращает null.

У вас есть таблица в вашей базе данных с именем structures?

Вы уверены, что данные вашей базы данных указаны в config/database.php?

У вас есть сообщение об ошибке php для всех? Там могут быть скрытые сообщения ... вызовите error_reporting(E_ALL); в конструкторе вашего контроллера.

Также попробуйте повторить: $this->db->last_query();, чтобы убедиться, что ваш запрос строится так же, как вы пытались в phpmyadmin ...

Надеюсь, это поставит вас на правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...