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
传递到索引视图,而不打印视图。就像上面示例中的“侧栏”视图一样