0

控制器传递$results给视图。视图有:

<?php foreach ($results as $result): ?>
<?php echo $result->time_start.' '.$result->time_finished;?>
<?php endforeach;?>

另外,我想以格式显示每个 $result的差异($result->time_finished减号)。如果 mm<10,则显示零,因此 63 秒显示为 00:01:03,而不是 0:1:3。$result->time_starthh:mm:ss

我应该在视图中做所有这些工作人员吗?我相信使用函数是有意义的。我应该在模型中编写这个函数并从视图中调用它吗?

如果不是 foreach,我肯定会从控制器调用 fhe 函数并将正确的 hh:mm:ss 从控制器传递给视图。但是,在这种情况下我该怎么办?

4

2 回答 2

2

这是我要做的:我会编写一个静态函数来格式化您的日期(使用我自己的类或扩展 KohanaDate类)。我会直接在你的视图中使用这个函数:

<?php echo SomeClass::date_format($result->time_start, $result->time_finished) ?>

为什么在视图中?因为该函数用于格式化,它实际上并没有返回不同的数据集。

于 2013-01-14T08:06:34.047 回答
1

如果您有一个需要在代码中多次使用的函数,那么 1. 创建您自己的帮助程序或 2. 扩展 Kohana 在 Date 帮助程序中的构建是有意义的。帮助器用于这种操作,而不是模型,如果代码变得复杂,也不是视图。

我不知道您使用的是 Kohana 3.2 还是 3.3,但它们之间的命名约定有些不同(因为实现了 3.3 PSR-0,这意味着大写的文件和类名),但这里是帮助者的 DOCS :

http://kohanaframework.org/3.2/guide/kohana/helpers

http://kohanaframework.org/3.3/guide/kohana/helpers

并用于扩展现有类:

http://kohanaframework.org/3.2/guide/kohana/files

http://kohanaframework.org/3.3/guide/kohana/files

如果您使用 Kohana 3.2,我会提供答案:

解决方案 1:扩展 Kohana Date 类是有意义的。在 application/classes 中创建一个名为 date.php 的文件。该文件应如下所示:

class Date extends Kohana_Date {
  public static function some_function_to_convert($date1, $date2) { } ;
}

在您看来,这样做:Date::some_function_to_convert($date1, $date2);

解决方案 2:在 application/classes/helper 目录中创建自己的助手。将其命名为 date_conversion.php。然后您的文件如下所示:

<?php defined('SYSPATH') or die('No direct script access.');

class helper_date_conversion {
  public static function some_function_to_convert($date1, $date2) { } ;
}

在您看来,这样做:

helper_date_conversion::some_function_to_convert($date1, $date2);
于 2013-01-14T15:37:25.207 回答