2010-11-19 5 views
1

Voici mon modèle, ce qu'il fait est un message particulier d'un utilisateur. Chaque message peut également avoir des commentaires, qui sont stockés dans un tableau appelé comments. J'ai tout fonctionne et je suis en mesure d'afficher le message le long w/les commentaires. Le problème est, chaque commentaire a un post_date qui s'affiche lorsque le commentaire a été fait. J'ai besoin d'appeler la fonction qui "convertit" la date en quelque chose comme "il y a 3 semaines". La méthode TimeAgo se trouve dans ma page user_model.php. L'extrait montre une variable appelée data qui est en fait pour la publication, le commentaire est intégré à l'intérieur du tableau et je le fais en boucle à mon avis. Donc la question est, est-ce qu'il ya une meilleure façon de gérer cela ou dois-je appeler la méthode TimeAgo à partir de la page d'affichage? Remarque: J'utilise mongodb mais cela ne devrait pas avoir d'importance si c'est mongodb ou mysql. Même chose ...Codeigniter: Appeler une méthode à partir d'une vue

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; 

Répondre

2

Si je comprends bien, je mettrais la méthode TimeAgo dans une bibliothèque ou un assistant, puis (auto) charge chaque fois que nécessaire et le processus de la date avant de le transmettre à la vue depuis le contrôleur.

cela vous permettra d'accéder à cette méthode à partir d'un autre modèle, si nécessaire, ou tout autre partie de votre application de CI, plutôt que de seulement dans user_model.php

+0

Correct, mais à des fins de «meilleure pratique», on ne devrait pas appeler une méthode depuis une vue? Je veux dire que je m'en fous mais j'étais curieux. :) – luckytaxi

+0

Vous ne devriez pas appeler une méthode de contrôleur à partir d'une vue, mais les aides correspondent bien à la facture. Vous pouvez également effectuer une mise en forme de champ dans MySQL ou dans une couche de préprocesseur exécutée dans votre contrôleur. –

1

Vous appelez la méthode du modèle de la contrôleur et le mettre dans une variable. Vous passez ensuite le var à la vue.

Questions connexes