在CakePhp中从视图调用微积分函数? 摘要

在CakePhp中从视图调用微积分函数? 摘要,cakephp,datetime,Cakephp,Datetime,我想从MySQL表中获取的$start\u date和$end\u date执行演算。我应该把微积分函数放在哪里才能在视图中访问它 细节 我是CakePhp新手。我有一个控制器: class PostersController extends AppController { var $name = 'Posters'; function index (){ $request = $this->Poster->find('all'); $this-

我想从MySQL表中获取的
$start\u date
$end\u date
执行演算。我应该把微积分函数放在哪里才能在视图中访问它


细节 我是CakePhp新手。我有一个控制器:

class PostersController extends AppController {
    var $name = 'Posters';
    function index (){ 
    $request  = $this->Poster->find('all');
    $this->set('posters', $request);
}
在我的表中,我有
$start\u date
$end\u date
字段。 我想有一个函数来执行持续时间的微积分,使用 这个功能

function PosterDuration ($start_date, $end_date){
    $duration = $start_date->diff($end_date);
    return $duration;
}
我想在我的视图中查看每张海报的
$duration
。但是我不知道把这个函数逻辑放在哪里

  • 我想把它作为我的PostersController中的一个私有函数, 但是,我不知道是否可以从
    Posters.ctp
    视图访问它
  • 我想创建一个名为
    DuractionCalculusComponent
    的组件
  • 这可能是一种行为吗

  • 由于我是CakePhp新手,我的知识不多,不知道该选择哪个选项。

    如果它仅用于视图层中的表示/输出,请将其作为帮助器,并对显示的每个记录称之为“随需应变”

    echo $this->Calculus->diff($date1, $date2);
    
    如果需要在控制器/模型级别进行某种处理,那么它可能更适合作为一种行为方法或一些afterFind()回调


    这实际上取决于用例。所以这里没什么可谈的。

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

    $this->set('duration', $duration);
    
    如果你在多个地方使用这个,那么你可以去找助手。为此,您需要传递变量。Don’s数据库表单帮助文件。这不是一个好的做法