我想将一个变量从控制器传递给两个视图文件。
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);
答案 0 :(得分: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中你可能有这样的东西:
<强>的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传递给该视图
$this->load->view('footer'. $data);
我希望这会让你的事情变得更清楚。