Codeigniter:需要从视图调用Controller函数


Codeigniter: Need to call a Controller function from a View

我今天偶然发现了Codeigniter的一个逻辑问题。4个小时后,我想我最好在这里问。

我的项目主页包含:

  • 热门帖子(属性:标题,徽标,摘录)
  • 每个帖子的热门评论(属性:会员名称、头像)

我的问题是获得每个帖子的顶级评论。

如果我不使用代码点火器,我会这样做:

<?php
foreach( $posts as $post ) {
    echo 'Post Title: '.$post['title'].'<br/>';
    $top_commenters = $this->get_top_commenters($post['id']);
    foreach( $top_commenters as $commenter ) {
        echo '<img src="'. $commenter['avatar'] .'"/><br/>';
    }
}
?>

我想你注意到了,我将每个帖子的ID传递给一个函数,以获得它的顶级评论。然而,在CodeIgniter中,我不能从视图调用控制器。

我最后要使用的解决方案是Ajax。但我希望我能在这里得到一些帮助。

提前感谢!

更新:根据要求,这里是我的模型功能和控制器功能:

//Model Function
function get_popular_posts() {
    $row = $this->db->query('
        SELECT * FROM posts
        INNER JOIN popular_posts ON posts.id = popular_posts.pid
        ORDER BY rank DESC LIMIT 6
    ');
    return $row->result_array();
}
//Model Function
function get_top_commenters($post_id){
    $row = $this->db->query('
        SELECT *
        FROM users
        WHERE username
        IN (
        SELECT username
        FROM comments WHERE pid = '. $post_id .')
        ORDER BY likes DESC LIMIT 6
    ');
    return $row->result_array();
}

为什么要从视图中调用控制器函数?在生成视图文件时,所有的数据处理都应该已经完成。

将$top_commenters传递到控制器中的视图。

您可以从视图调用任何控制器:URL示例:

<a href="controller_name/controller_function"> My URL </a>