【问题标题】:Codeigniter: Calling a method from a viewCodeigniter:从视图调用方法
【发布时间】:2010-11-19 19:32:24
【问题描述】:

这是我的模型,它的作用是从用户那里获取特定的帖子。每个帖子也可能有 cmets,它们存储在一个名为 comments 的数组中。我的一切工作正常,并且能够与 cmets 一起显示帖子。问题是,每条评论都有一个post_date,它会在发表评论时显示。我需要调用将日期“转换”为“3 周前”之类的函数。方法TimeAgo 位于我的user_model.php 页面中。摘录显示了一个名为 data 的变量,它实际上是用于帖子的,评论嵌入在数组中,我在视图中循环遍历它。

所以问题是,有没有更好的方法来处理这个问题,还是我必须从视图页面中调用 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;

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

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

    这将允许您在需要时从另一个模型中访问该方法,或者实际上是您的 CI 应用程序的任何其他部分,而不是仅从 user_model.php

    【讨论】:

    • 正确,但假设出于“最佳实践”的目的,不应该从视图中调用方法?我的意思是我可以不在乎,但我很好奇。 :)
    • 您不应该从视图中调用控制器方法,但助手非常适合。您还可以在 MySQL 中或在控制器中运行的预处理器层中进行一些字段格式化。
    【解决方案2】:

    您从控制器调用模型方法并将其放入变量中。然后将 var 传递给视图。

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 2011-02-06
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多