1

コントローラから2つのビューファイルに変数を渡したい。

    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変数があるので、それらを使って好きなことを行うことができます。

コメント.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 に答える