2013-07-30 54 views
0

我偶然發現了Codeigniter的一個邏輯問題。 4個小時後,我想我應該在這裏問一下。Codeigniter:需要從視圖調用控制器功能

我的項目主頁包含:

  • 熱門信息(屬性:名稱,標誌,節選)
  • 頂級評每篇文章(屬性:會員名,頭像)

我的問題是獲取每篇文章的熱門評論。

如果我不使用代碼點火器,這是我會怎麼做:

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

你能告訴我你的控制器和你用來獲取帖子的模型函數嗎? – bottleboot

+0

請澄清爲什麼http://stackoverflow.com/questions/9986520/how-to-call-codeigniter-controller-function-from-view?rq=1和http://stackoverflow.com/questions/16366130/calling- a-controller-function-from-a-view-in-codeigniter?rq = 1和http://stackoverflow.com/questions/11682604/how-to-call-function-of-controller-in-view-using- codeignator不回答你的問題。 – Gordon

+0

我知道爲什麼!但我需要幫忙解決。 – Sobiaholic

回答

-6

你可以從查看調用任何控制器:URL例如:

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

這不是調用控制器。這是鏈接到控制器。 – Gordon

+1

這只是連接到控制器(反過來,它的觀點)。 -1 – BenM

+0

這裏的問題是您需要用戶觸發控制器功能,但我們需要的是在視圖加載時得到結果,即從另一個類調用方法並獲取結果。 – Dipen

1

你爲什麼要打電話給控制器你的觀點的功能? 當你生成你的視圖文件時,所有的數據處理應該已經完成​​。

將$ top_commenters傳遞給控制器​​中的視圖。

+0

我已更新我的問題,請檢查它。 – Sobiaholic

相關問題