0

私は CodeIgniter を初めて使用し、理解できない問題を抱えています。これが私のモデルクラスです (ファイル名 = tenant.php):

<!-- language php -->

class tenant extends CI_Model {

    function getTenants() {
        $this->db->select()->from('hrs_tenants');
        $query=$this->db->get();
        return $query->result_array();
    }
}

私のコントローラークラス (ファイル名 = tenants.php):

<!-- language php -->

class tenants extends CI_Controller {
    function  index() {
        $this->load->model('tenant');
        $data['tenants']= $this->tenant->getTenants();
        echo "<pre>"; print_r($data['tenants']); echo "</pre>";
        $this->load->view('tenants', $data);
    }
}

そして最後に私のビューファイル(tenants.php):

<!-- language php -->
<html>
    <head>
        <title>Tenants Listing</title>
    </head>
    <body>
    <h1>Tenants Listing</h1>
    <?php
        if(!isset($tenants)) {
    ?>
        <p>There are no Tenants to List</p>
    <?php 
        } else {
            foreach($tenants as $row){?>
                <h2><a href="<?php base_url()?>tenants/tenant<?php $row['T_ID']?>"><?php $row['T_Name']?></a></h2>
        <p>Mobile : <?php $row['T_Mobile']?></p>
    <?php
        }
    }
    ?>
    </body>
</html>

ここで問題に戻ります。テナント名とテナントのモバイル番号が表示されるはずですが、ビューには表示されません。代わりに、静的な HTML ビューが表示されます。しかし、いくつかの方法でタグを繰り返します。ビュー ファイルの html 出力/レンダリングされた HTML は次のとおりです。

<pre>Array
(
    [0] => Array
        (
            [T_ID] => 1
            [T_Name] => John Doe
            [T_Mobile] => 030112345678
        )

    [1] => Array
        (
            [T_ID] => 2
            [T_Name] => Haider Hassan
            [T_Mobile] => 033412345678
        )

)
</pre><html>
<head>
    <title>Tenants Listing</title>
</head>
<body>
<h1>Tenants Listing</h1>
<h2><a href="tenants/tenant"></a></h2>
    <p>Mobile : </p>
<h2><a href="tenants/tenant"></a></h2>
    <p>Mobile : </p>
</body>
</html>

preコントローラーファイルで直接エコーを行い、タグ内のHTMLファイルでも生成されるため、データベースは正常に接続されています。

何かを追加するのを忘れたのですが、なぜこの問題が発生するのですか?

4

2 に答える 2

1

コントローラ ファイル:

class tenants extends CI_Controller {
    function  index() {
        $this->load->model('tenant');
        $data['tenants']= $this->tenant->getTenants(); //Get rid of Echo
        $this->load->view('tenants', $data);
    }
}

ファイルを閲覧する:

<html>
    <head>
        <title>Tenants Listing</title>
    </head>
    <body>
    <h1>Tenants Listing</h1>
    <?php
        if(!isset($tenants)) {
        echo '<p>There are no Tenants to List</p>';
        } else {
            foreach($tenants as $row): ?>
                <h2><a href="<?= base_url() . 'tenants/tenant/' . $row['T_ID']?>"><?= $row['T_Name'] ?></a></h2>
        <p>Mobile : <?= $row['T_Mobile'] ?></p>
    <?php endforeach;
        }
    ?>
    </body>
</html>

うん、エコーをするのはクールだ。問題ない。ただし、php タグを閉じる使用を最小限に抑えるようにしてください...休憩のたびに php を開くのではなく、文字列を連結してみてください...

質問?

于 2013-03-10T11:11:45.797 に答える
0

唯一の解決策は、すべての $row でエコーを書き込むことだと思います

私は今このようにしました

    <h2><a href="<?php echo base_url()?>tenants/tenant/<?php echo $row['T_ID']?>"><?php echo $row['T_Name']?></a></h2>
    <p>Mobile : <?php echo $row['T_Mobile']?></p>

どこにでもエコーを書いても大丈夫ですか、それとももっと良い解決策がありますか?

于 2013-03-10T10:44:44.633 に答える