私は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
私はphpmyadminの中でクエリを実行し、望ましい結果を返しました。 さらに、チュートリアルで作成した「ニュース」テーブルが正常に動作していたので、DB設定が正しいことがわかりました。 –
なぜモデルを2回ロードしていますか?そして、データベースを呼び出す代わりに変数を空の配列に設定しようとしましたか?あるいは、単純なテキスト変数を宣言して出力しようとします。そこで、問題をビューまたはモデルに絞り込むことができました。 – florian