【问题标题】:Kohana3 framework: MVC: call function from ViewKohana3 框架:MVC:从视图调用函数
【发布时间】:2012-12-27 17:28:37
【问题描述】:

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

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

另外,我想以hh:mm:ss 格式为每个 $result 显示差异($result-&gt;time_finished 减去 $result-&gt;time_start)。如果 mm

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

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

【问题讨论】:

    标签: php foreach scope kohana-3


    【解决方案1】:

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

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

    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);
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 2015-12-14
        • 1970-01-01
        • 2018-07-21
        • 2021-11-17
        • 1970-01-01
        相关资源
        最近更新 更多