从CakePhp中的视图调用微积分函数?

时间:2012-03-21 22:18:49

标签: cakephp datetime

摘要

我想从MySQL表中获取的$start_date$end_date执行微积分。在我的视图中,我应该在哪里使用微积分函数来访问它?


详细

我是CakePhp的新手。我有这个控制器:

class PostersController extends AppController {
    var $name = 'Posters';
    function index (){ 
    $request  = $this->Poster->find('all');
    $this->set('posters', $request);
}

在我的海报MySQL表中,我有$start_date$end_date个字段。 我希望有一个功能来使用持续时间执行微积分 这个功能。

function PosterDuration ($start_date, $end_date){
    $duration = $start_date->diff($end_date);
    return $duration;
}

我希望在每个海报的视图中查看$duration。但是我不知道在哪里放这个函数逻辑。

  1. 我想把它作为我的PostersController中的私有函数, 但是我不知道我是否可以从Posters.ctp视图访问它。
  2. 我想过创建一个名为DuractionCalculusComponent的组件。
  3. 这可能是一种行为吗?
  4. 由于我是CakePhp的新手,我的知识水平不高,不知道选择哪个选项。

2 个答案:

答案 0 :(得分:0)

如果它仅用于视图层中的表示/输出,请将其作为帮助程序,并为您显示的每个记录“按需”调用它。

echo $this->Calculus->diff($date1, $date2);

如果在控制器/模型级别需要以某种方式工作,它可能更适合作为行为方法或一些afterFind()回调。

这实际上取决于用例。所以不要再去这里了。

答案 1 :(得分:0)

当控制器中的所有值都可用时。只需计算差值并使用set function或set compact将计算结果传递给视图。

$this->set('duration', $duration);

如果你在多个地方使用它,那么你可以去帮忙。为此,您需要传递变量。 Don的数据库形成帮助文件。这不是一个好习惯。