2013-07-23 79 views
0

我使用的是CodeIgniter。我想在其他視圖中加載視圖。我怎樣才能做到這一點?CodeIngiter:在另一個視圖中加載視圖

例子:

比方說,我有一個 「視圖」 稱爲 「CommentWall」。在CommentWall中,我想要一些「評論」視圖。我在我的網站上使用「評論」的觀點!

我該怎麼做?看來CodeIgniter只允許我按順序加載視圖,考慮到我在其他視圖中使用可重用視圖INSIDE,這有點奇怪!

我可以在我的評論牆內看到嗎?還是有其他方式可以可重複使用意見裏面一個視圖?

+0

你可以做到這一點,什麼是你遇到的問題? – Matthew

+1

在控制器中做這些事情會更好,這可能有助於:http://stackoverflow.com/questions/17317115/is-it-ok-to-put-conditional-logic-on-codeigniter-views/17317621#17317621 –

回答

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 

更新: Alos,check this answer

0

嘗試

class Main extends CI_Controller { 

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

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

,並在每個視圖嘗試

echo $comments; 
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; 
相關問題