0

CodeIgniter を使用しています。ビューを他のビューの中にロードしたい。これどうやってするの?

例:

「CommentWall」という「ビュー」があるとしましょう。CommentWall では、たくさんの「コメント」ビューが必要です。サイト全体で「コメント」用のビューを使用しています。

これどうやってするの?CodeIgniter では、ビューを順番にロードすることしかできないようです。これは、他のビューの内側で再利用可能なビューを使用していることを考えると、ちょっと奇妙です!

$this->load->view('comment');CommentWall のビューの内部を実行できますか? または、再利用可能なビューをビュー内に含める他の方法はありますか?

4

3 に答える 3

1

たとえばCommentWallコントローラーからメインビューをロードするだけで、簡単に実行できます

$this->load->view('CommentWall');

ビューに子ビューを追加するには、ビューCommentWall内に次の行を追加しますCommentWall

$this->view('Comment');

たとえば、次CommentWallのようにコントローラーからビューをロードする場合

$data['comments'][] = 'Comment one';
$data['comments'][] = 'Comment two';

// load the parrent view
$this->load->view('CommentWall', $data);

これをCommentWall(親ビュー)に入れると、

foreach ($comments as $comment) {
    $this->view('Comment', array('comment' => $comment));
}

そして、あなたCommentがこれを持っている場合、あなたの(子ビュー)で

echo $comment . '<br />';

次に、次のような出力が得られるはずです

Comment one

Comment two

更新:また、この回答を確認してください

于 2013-07-23T14:04:38.937 に答える
0

試す

class Main extends CI_Controller {

    function __construct()
    {
        parent::__construct();

        $data->comments =$this->load->view('comment');
            $this->load->vars($data);
    }

そして、すべてのビューで試してください

echo $comments;
于 2013-07-23T15:02:14.860 に答える
0

「コメント」ビューをコントローラーの文字列としてロードし、「CommentWall」ビューに渡すだけです。

次のように実行できます。

//Controller:

public function load_comment_wall($param) {

       $comments_view = ""; //String that holds comment views

      //here load the comments for this wall as follows:
      //assuming $comment_ids is array of id's of comment to be put in this wall...
      foreach($comment_ids as $comment_id) {
          $temp = $this->load->view("comment",array('comment_id'=>$comment_id),TRUE);     //Setting last parameter to TRUE will returns the view as String
          $comments_view = $comment_views.$temp;
      }

      $data['comments'] = $comments_view;

      //load comment wall
      $this->load->view('comment_wall',$data);
}

//コメント ウォール ビューで、次の行を追加します

echo $comments;
于 2013-07-26T13:59:44.363 に答える