Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数据传递给两个视图_Php_Codeigniter - Fatal编程技术网

Php 将数据传递给两个视图

Php 将数据传递给两个视图,php,codeigniter,Php,Codeigniter,我想将一个变量从控制器传递到两个视图文件 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-

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

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

类似这样的东西

$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中,您可能会看到如下内容:

comments.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['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中,您可能会看到如下内容:

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

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

好的,您能解释一下如何将它传递到索引和后期视图文件吗?我明白您的意思,但我需要在不加载数据的情况下将数据传递到索引视图。另一种方式,比如我加载了post,$data。我需要从post视图中获取$data变量来索引视图。我不确定“不加载”是什么意思<代码>$this->load->view('index',$data,TRUE)将
$data
传递到索引视图,而不打印视图。就像上面例子中的“侧边栏”视图一样好的,你能解释一下如何将它传递到索引和后期视图文件吗?我明白你的意思,但我需要在不加载数据的情况下将数据传递到索引视图。另一种方式,比如我加载了post,$data。我需要从post视图中获取$data变量来索引视图。我不确定“不加载”是什么意思<代码>$this->load->view('index',$data,TRUE)将
$data
传递到索引视图,而不打印视图。就像上面示例中的“侧栏”视图一样