【问题标题】:Codeigniter: Need to call a Controller function from a View [duplicate]Codeigniter:需要从视图中调用控制器函数[重复]
【发布时间】:2013-07-30 11:00:44
【问题描述】:

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

我的项目主页包含:

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

我的问题是如何获得每个帖子的热门评论。

如果我不使用 Code Igniter,我会这样做:

<?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();
}

【问题讨论】:

标签: php codeigniter


【解决方案1】:

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

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

【讨论】:

  • 我已经更新了我的问题,请检查一下。
【解决方案2】:

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

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

【讨论】:

  • 这不是调用控制器。那是链接到一个控制器。
  • 这只是链接到控制器(反过来,它的视图)。 -1
  • 这里的问题是您需要用户触发控制器功能,但我们需要的是在加载视图时获取结果,即从另一个类调用方法并获取其结果。
猜你喜欢
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
相关资源
最近更新 更多