我正在使用CodeIgniter。我想在其他视图中加载视图。我怎么能这样做?
示例:
假设我有一个名为“CommentWall”的“视图”。在CommentWall中,我想要一堆“评论”视图。我在我的网站上使用“评论”视图!
我该怎么做?似乎CodeIgniter只允许我按顺序加载视图,考虑到我在其他视图中使用可重用的视图,这有点奇怪!
我可以在CommentWall的视图中进行$this->load->view('comment');
吗?或者是否有其他方法可以将可重用视图包含在内部视图中?
答案 0 :(得分: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));
}
如果你有这个<{p>,请在你的Comment
(子视图)中
echo $comment . '<br />';
然后你应该得到像这样的输出
Comment one
Comment two
更新: Alos,check this answer。
答案 1 :(得分:0)
尝试
class Main extends CI_Controller {
function __construct()
{
parent::__construct();
$data->comments =$this->load->view('comment');
$this->load->vars($data);
}
在每个视图中尝试
echo $comments;
答案 2 :(得分:0)
只需在控制器中加载“Comment”vies作为字符串,并将其传递给“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;