1

我想将一个变量从控制器传递给两个视图文件。

    public function post($id) {
    $data['query'] = $this->blog_model->get_post($id);
    $data['comments'] = $this->blog_model->get_post_comment($id);
    $data['post_id'] = $id;
    $data['total_comments'] = $this->blog_model->total_comments($id);

我想将 [total_comments] 变量传递给 index.php 和 post.php 视图。我怎么做?我可以将数据传递给视图而不像这样加载它们:

     $this->load->view('post',$data);
4

1 回答 1

4

沿着这条线的东西?

$data['post'] = $this->load->view('post',$data, TRUE);

'TRUE'参数告诉 CI 调用您的视图并将其放入$data['post']变量中。稍后您可以在另一个视图中使用该变量并将其打印出来。

编辑:

我不确定你是如何组织你的控制器和视图的,但可以这样说。这只是一个例子:

控制器

 public function comments() {
        $data['comments'] = $this->comments_model->get_all_comments();
        $data['someVariable'] = 123;
        $this->load->view('header', $data);          //load header view
        $data['sidebar'] = $this->load->view('sidebar', $data, TRUE);   //put sidebar view in a variable, but don't show it immediately 
        $this->load->view('comments', $data);        //load comments view

        $this->load->view('footer'. $data);          //load footer view
    }

每当您传递$data给控制器​​时,您都会将整个$data数组传递给该视图,以便您可以访问视图中的所有元素。

例如,在您的 comments.php 视图中,您将拥有$comments,$someVariable$sidebar变量,因此您可以对它们做任何您想做的事情。

在 comments.php 中你可能会有这样的东西:

评论.php

<div id="comments"> 
<?php 
   foreach($comments as $c){       //print out all found comments
?>
   <div class="comment">
      <?= $c['commentauthor'] ?> <br />
      <?= $c['commenttext'] ?>
   </div>
<?php } ?>
</div>

<div id="sidebar">
  <?= $sidebar ?>       //print out sidebar
</div>

<p> This is some variable: <?= $someVariable ?> </p>

这些相同的变量在页脚视图中可用,因为您已将 $data 传递给该视图

$this->load->view('footer'. $data);

我希望这能让你更清楚一点。

于 2012-09-01T13:40:40.367 回答