我還是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);
}
}
這裏是我的模型(structures_model)
<?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
我不知所措。我已經查看了人們所得到的所有類似錯誤,但無法弄清楚爲什麼沒有定義structure_all數組。它不應該創建在我設置的控制器功能中:
$data['structures_all'] = $this->structures_model->get_structures();
我在想什麼?
你確定數據庫中有數據要填充數組嗎? – Cfreak 2012-02-28 17:58:48
我在phpmyadmin中運行了查詢,並返回了所需的結果。 另外,我在教程中創建的「新聞」表格工作正常,所以我知道數據庫配置是正確的。 – 2012-02-28 18:09:05
你爲什麼要加載模型兩次?你有沒有嘗試將變量設置爲空數組而不是調用數據庫?或者嘗試聲明並輸出一個簡單的文本變量。所以我們可以將問題縮小到視圖或模型。 – florian 2012-02-28 18:16:31