CodeIgniter将变量从控制器传递给视图

时间:2015-03-24 09:01:03

标签: php arrays codeigniter model-view-controller

很抱歉,如果这个问题已经得到解答,但我无法找到答案。 我想将一个变量从我的模型传递给控制器​​,最后在视图中显示它。

我对数据库执行查询,之后我计算结果(通过num_rows)。然后我返回结果。

public function countHighRisk(){
    $this->db->select("ares_status");
    $this->db->from("tbl_alert_result");
    $this->db->join('tbl_status_standards', 'ares_status = sts_status_id');
    $this->db->where('sts_status_risk', 3);
    $query = $this->db->get();

    return $query->num_rows();
}

之后我将结果放在一个数组中并将数组传递给我的视图。

public function index()
{
    $this->load->model('Alert_result_model');
    $data['high'] = $this->Alert_result_model->countHighRisk();

    $this->load->view('templates/head');
    $this->load->view('templates/menu');
    $this->load->view('pages/Dashboard', $data);
    $this->load->view('templates/footer');
}

当我尝试在视图中显示变量时出现错误。

<div class="col-xs-8 text-right">
     <span> High Risk </span>
     <h2 class="font-bold"><span class="count"><?= $high; ?></span></h2>
</div>

错误:http://imgur.com/iHkYHiI

提前致谢。

3 个答案:

答案 0 :(得分:1)

你在这里调用意见的整个想法都是错误的。请按如下方式使用:

<强>控制器:

public function index()
{
    $this->load->model('Alert_result_model');
    $data['high'] = $this->Alert_result_model->countHighRisk();

    $this->load->view('pages/Dashboard', $data);
}

查看:

<? $this->load->view('templates/head'); ?>
<? $this->load->view('templates/menu'); ?>
<div class="col-xs-8 text-right">
     <span> High Risk </span>
     <h2 class="font-bold"><span class="count"><?= $high; ?></span></h2>
</div>
<? $this->load->view('templates/footer'); ?>

还可以通过$this->Alert_result_model->countHighRisk();

检查print_r($this->Alert_result_model->countHighRisk();)实际返回的内容

答案 1 :(得分:1)

您可以将视图加载到控制器中,但在

下执行此操作
class Dashboard extends CI_Controller {
 public function index() {

  $this->load->model('Alert_result_model');
  $data['high'] = $this->Alert_result_model->countHighRisk();

  // Choose only one header examples:
  $data['header'] = $this->load->view('header', Null, TRUE); // If No Data
  $data['header'] = $this->load->view('header', $data, TRUE); // If Data

  // Choose only one Footer examples:
  $data['footer'] = $this->load->view('footer', Null, TRUE); // If No Data
  $data['footer'] = $this->load->view('footer', $data, TRUE); // If Data

  $this->load->view('dashboard', $data);
 }
}

信息中心视图

<?php echo $header;?>

<?php foreach ($high as $low) { ?>

   <?php echo $low['something'];?>

<?php }?>

<?php echo $footer;?>

如果您有一个标题单独的页眉控制器和页脚控制器,您将需要HMVC如果您对CI3中默认用户指南的用户指南右上角感到困惑,则切换到更清洁的版本。

答案 2 :(得分:0)

请更改

$this->load->view('pages/Dashboard', $data);

进入

$this->load->view('pages/Dashboard', $data, true);

现在它应该工作。