Code Igniter:从DB返回数据,放置此解析/输出逻辑的位置

时间:2011-06-06 03:22:59

标签: php codeigniter

我正在返回MySQL的人员列表

所以我有一个模型,一个控制器和一个视图。

当我输出页面上的人员列表时,我需要检查人名的长度,并动态地将类添加到显示的位置。

在此之前,我创建了一个名为“name_class”的简单函数,并将其放在common.php include中。在页面上,当我输出人名时,我会将名称传递给它,如果名称超过一定长度,它将回显一个类。

在代码点火器中,放置此功能的最佳位置在哪里?我认为可能是控制器上的私有函数,但是,我可以从视图中访问它吗?

3 个答案:

答案 0 :(得分:2)

对我来说,这似乎更合乎逻辑,因为它属于你视图中的一个功能。如果您的操作与显示数据的方式有关,那么它应该位于代码的视图层中。

虽然CodeIgniter面向Web应用程序,但您应该始终考虑MVC设计模式不是特定于网页/网站的事实。 MVC的视图层用于更改模型提供的数据如何显示或提供给UI或客户端。您应该尝试将任何基于客户端或UI的信息或逻辑放入视图中,并使其与模型和控制器层保持隐藏。

例如,看起来您的视图正在直接输出HTML,客户端浏览器将使用该HTML来显示。输出HTML非常有意义,并根据Model提供的数据提供所需的CSS类。现在,如果您决定使用以JSON格式接受数据并显示数据的客户端库,请考虑在您的应用程序中需要更改的内容。如果您的应用程序的体系结构是正确的,您只需要更改View以提供JSON格式的信息,并且您不应该将视图特定代码(即您的类逻辑)保留在另一层中。

答案 1 :(得分:1)

不是控制器上的私有函数,而是控制器上的公共函数。如果您创建了这样的函数:

public function _test(){
    echo "HERE";
  }

然后您可以使用get_instance()->_test();在视图中访问它。确保使用下划线开始函数名称,以确保它不能从浏览器中执行。

编辑:你也可以使用http://codeigniter.com/user_guide/general/helpers.html中记录的助手。

答案 2 :(得分:1)

它肯定会出现在视图中,或者如果您可以使函数有用足以用于不止这个实例,请将其放在帮助器中 - 但仍然只能在图。

视图是您的输出。 HTML尽可能属于视图。 class是HTML,因此您当然希望将其限制在您的视图中。

这样想(虽然这是一个广泛的概括):

  • Controller =输入
  • 模型=处理
  • 查看=输出

也没有直接从视图访问Controller函数的好方法,您必须在控制器中运行它并将其作为数据传递给视图。