【问题标题】:codeigniter, Cant pass the data on view page from the controller pagecodeigniter,无法从控制器页面传递视图页面上的数据
【发布时间】:2013-03-10 10:18:38
【问题描述】:

我是 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文件中生成。

我是不是忘记补充了,为什么会遇到这个问题?

【问题讨论】:

  • 你试过没有foreach循环吗?尝试直接使用$tenants['T_ID'] 看看是否可行。
  • 当数据从模型返回时,首先在控制器中测试它以确保您的模型返回所需的数据
  • 您是否自动加载了数据库助手。如果没有,那么您需要在模型中加载 $this->load->database() 。您可能还想在模型之外运行 $query->result()
  • @dcd018 按照你说的直接试了。它给出了错误。严重性:通知消息:未定义索引:T_ID
  • @MuhammadNasir 我认为模型正在返回数据或
     标记中的数组不会生成..

标签: php codeigniter


【解决方案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>

是的,做 echo 很酷。不是问题。但是,尽量减少关闭 php 标记的使用...尝试连接字符串而不是在每次中断后打开 php...

问题?

【讨论】:

    【解决方案2】:

    我认为现在唯一的解决方案是为每个 $row 编写 echo

    我现在是这样做的

        <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>
    

    这样可以到处写echo还是有更好的解决办法?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多