Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter:从视图调用方法_Codeigniter - Fatal编程技术网

Codeigniter:从视图调用方法

Codeigniter:从视图调用方法,codeigniter,Codeigniter,这是我的模型,它的作用是从用户那里获取特定的帖子。每篇文章也可能有评论,这些评论存储在一个名为comments的数组中。我有一切工作,我能够显示与评论的帖子。问题是,每个评论都有一个post_date,在发表评论时显示该日期。我需要调用将日期“转换”为类似“3周前”的函数。方法TimeAgo位于我的user\u model.php页面中。摘录显示了一个名为data的变量,它实际上是用于文章的,注释嵌入在数组中,我在视图中循环使用它 所以问题是,有没有更好的方法来处理这个问题,或者我必须从查看页面

这是我的模型,它的作用是从用户那里获取特定的帖子。每篇文章也可能有评论,这些评论存储在一个名为
comments
的数组中。我有一切工作,我能够显示与评论的帖子。问题是,每个评论都有一个
post_date
,在发表评论时显示该日期。我需要调用将日期“转换”为类似“3周前”的函数。方法
TimeAgo
位于我的
user\u model.php
页面中。摘录显示了一个名为
data
的变量,它实际上是用于文章的,注释嵌入在数组中,我在视图中循环使用它

所以问题是,有没有更好的方法来处理这个问题,或者我必须从查看页面中调用
TimeAgo
方法

注意,我使用的是mongodb,但不管是mongodb还是mysql。同样的事情

user\u 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;

如果我的理解是正确的,我会将TimeAgo方法放在库或助手中,然后在必要时(自动)加载并处理日期,然后从控制器内将其传递给视图


这将允许您在需要时从另一个模型中访问该方法,或者实际上从CI应用程序的任何其他部分访问该方法,而不仅仅是从user\u model.php中访问。您可以从控制器调用模型方法并将其放入变量中。然后将var传递给视图。

正确,但是为了“最佳实践”的目的,不应该从视图中调用方法?我的意思是我可以不在乎,但我很好奇您不应该从视图中调用控制器方法,但是帮助器非常适合这项工作。您还可以在MySQL中或在控制器中运行的预处理器层中进行一些字段格式化。
$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;