2010-11-19 74 views
1

這是我的模型,它所做的是從用戶拉特定的帖子。每篇文章也可能有評論,這些評論存儲在名爲comments的數組中。我有一切工作,我可以顯示該帖子與評論。問題是,每個評論都有一個post_date,當評論發佈時顯示。我需要調用將日期「轉換」爲「3周前」的功能。方法TimeAgo位於我的user_model.php頁面。摘錄顯示了一個名爲data的變量,這個變量實際上是針對帖子的,註釋嵌入在數組中,並且在我的視圖中循環顯示。Codeigniter:從視圖中調用方法

所以問題是,有沒有更好的方法來處理這個問題,還是我必須從查看頁面調用TimeAgo方法?

請注意,我使用的是mongodb,但它應該無關緊要,如果它是mongodb或mysql。同樣的事情...

user_model.php

$query = array("_id" => new MongoId($plan_id), "username" => $username); 
$fields = array("plan_title", "comments", "post_date"); 

$data = $collection_plans->findOne($query, $fields); 
$data['date'] = self::TimeAgo($data['post_date']->sec); 
$data['username'] = $username; 

return $data; 

回答

2

如果我的理解是正確的我把TIMEAGO法庫或幫手,那(自動)負載必要時內部和處理日期然後將其傳遞給控制器​​內的視圖。

這將允許您從訪問另一個模型內的方法,如果需要,或者你確實CI應用程序的其他部分,而不是隻從內user_model.php

+0

正確,但讓我們說「最佳實踐」的目的,不應該從視圖內調用方法?我的意思是我可以少管,但我很好奇。 :) – luckytaxi 2010-11-19 21:35:46

+0

你不應該從視圖中調用控制器方法,但傭工很適合這個賬單。你也可以在MySQL中做一些字段格式化,或者在你的控制器中運行一個預處理器層。 – 2010-11-20 05:20:21

1

您從調用模型方法控制器並將其放入一個變量。然後,您將var傳遞給視圖。

相關問題