-1

コントローラーがビューに渡さ$dataれません。理由がわかりません。私は以前のプロジェクトのコードを再利用していますが、うまくいきました.$dataの受け渡しがどのように機能するのかという考えは確かに理解しています. しかし、コードをコピーするときに何かを見逃したのではないでしょうか?

$data['hello']テスト目的のためだけに変数をそこに入れました。出力からわかるように、うまくいき$helloません。if失敗し、コードが正しく実行されます。elseこれは、ビュー ファイル自体が読み込まれていることを意味します。

コントローラ:

function users() {
    $data['title'] = 'users';
    $data['users'] = $this->main_m->get_users();
    $data['hello'] = 5;
    $this->load->view('users', $data);
}

意見:

<?php
echo $hello;
if ($users->num_rows != 0) {
    foreach ($users->result() as $user) {
    }
} else {
    echo "No users.";
}

出力 (要約):

A PHP Error was encountered
Message: Undefined variable: hello
Line Number: 2
A PHP Error was encountered
Message: Undefined variable: users
Line Number: 3
A PHP Error was encountered
Message: Trying to get property of non-object
Line Number: 3

No users.

編集:リクエストに関する詳細情報:モデル:

public function get_users($amount = 0, $offset = 0) {
    $this->db->from('users');
    $this->db->order_by('l_name', 'desc');
    if ($amount != 0)
        $this->db->limit($amount, $offset);
    return $this->db->get();
}
4

4 に答える 4

0

私はいつもこのようにモデルを変更します

$query = $this->db->get();
return $query->result();

そして視野に

if (count($users)> 0) {
foreach ($users as $user) {
echo $user['name'];
}
} else {
echo "No users.";
}

お役に立てれば

よろしく

iijb

于 2012-12-12T12:49:28.017 に答える
0

間違っている非常に基本的なものがあります。そのコントローラーから出て、健全性チェックを行います。最初に、ウェルカム ビューが機能していることを確認します。ウェルカムコントローラーに移動し、これをインデックスメソッドに入れる場合

    $data['here'] = 'we are here' ;
    $this->load->view('welcome_message', $data);

そして、welcome.php ビュー ファイルのどこかに

<?php echo $here ?>

これを設定する必要はありません: $data = array(); ただし、データ変数を作成しなくても、ビュー内で $this->load->view('welcome_message', $data); を呼び出してもエラーが発生しないため、一部の人はそれを提案しています。

最後に、これを見ることをお勧めします

  function users() {
     $data['title'] = 'users';
     $data['users'] = $this->main_m->get_users();
     $data['hello'] = 5;
     $this->load->view('users', $data);
 }

users と呼ばれるメソッドがあり、users と呼ばれるオブジェクトを返し、users と呼ばれるビューがあることを確認してください。混乱する可能性があります。:-)

于 2012-12-13T03:05:32.383 に答える
0

データを配列$data = array();に送信する前に書き込むだけです。$data

function users() {
$data = array();
$data['title'] = 'users';
$data['users'] = $this->main_m->get_users();
$data['hello'] = 5;
$this->load->view('users', $data);
}
于 2012-12-12T12:57:14.993 に答える
0

簡単な var_dump() チェックで問題を解決できると思います。

  1. var_dump()ing $data['users'] でモデルから何が出力されるかを確認してください - これはオブジェクトですか? $data['users']->result() を var_dump() するとどうなりますか?
  2. 次に、あなたのビューで var_dump() $data - すべてのピースがありますか?

モデル関数を示しても、実際のデータ結果が得られたことを証明するものではありません。それを確認します。あなたのコードは一見問題ないように見えるので、そこに問題があるとは思いません。

于 2012-12-12T13:29:51.610 に答える