我使用的是CodeIgniter。我想在其他視圖中加載視圖。我怎樣才能做到這一點?CodeIngiter:在另一個視圖中加載視圖
例子:
比方說,我有一個 「視圖」 稱爲 「CommentWall」。在CommentWall中,我想要一些「評論」視圖。我在我的網站上使用「評論」的觀點!
我該怎麼做?看來CodeIgniter只允許我按順序加載視圖,考慮到我在其他視圖中使用可重用視圖INSIDE,這有點奇怪!
我可以在我的評論牆內看到嗎?還是有其他方式可以可重複使用意見裏面一個視圖?
我使用的是CodeIgniter。我想在其他視圖中加載視圖。我怎樣才能做到這一點?CodeIngiter:在另一個視圖中加載視圖
例子:
比方說,我有一個 「視圖」 稱爲 「CommentWall」。在CommentWall中,我想要一些「評論」視圖。我在我的網站上使用「評論」的觀點!
我該怎麼做?看來CodeIgniter只允許我按順序加載視圖,考慮到我在其他視圖中使用可重用視圖INSIDE,這有點奇怪!
我可以在我的評論牆內看到嗎?還是有其他方式可以可重複使用意見裏面一個視圖?
您可以從控制器很容易做到這一點,只需加載主視圖,例如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。
嘗試
class Main extends CI_Controller {
function __construct()
{
parent::__construct();
$data->comments =$this->load->view('comment');
$this->load->vars($data);
}
,並在每個視圖嘗試
echo $comments;
只需加載「註釋」爭奪,在控制器串並把它傳遞給「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;
你可以做到這一點,什麼是你遇到的問題? – Matthew
在控制器中做這些事情會更好,這可能有助於:http://stackoverflow.com/questions/17317115/is-it-ok-to-put-conditional-logic-on-codeigniter-views/17317621#17317621 –