2010-11-19 23 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

+0

あなたはビューからコントローラーメソッドを呼び出すべきではありませんが、ヘルパーは法案をうまく収めます。また、MySQLで、またはコントローラで実行されているプリプロセッサレイヤーでフィールドフォーマットを行うこともできます。 –

1

からでしょうあなたからのモデルメソッドを呼び出しますそれを変数に入れてください。 varをビューに渡します。

関連する問題