PHP代码在Cakephp2.8.5中的default.ctp页面中不起作用

时间:2016-11-12 09:26:09

标签: cakephp

在此先感谢,我是cakephp的新手,我正在使用cakephp2.8.5版本。实际上我想编写一个php代码来计算mysql数据库表中的记录数,将有序日期列日期值与当前日期进行比较。我编写了代码,但我的菜单在default.ctp页面。在订单检查菜单中,我必须以数字显示计数。 default.ctp页面位于app / view / Layout / default.ctp中,所以如何在不使用控制器的情况下在php代码中创建计数值。

我的代码会将当前日期与表列日期进行比较并计算count.How如何将变量$ ordCounts传递给default.ctp页面而不创建控制器页面 具体如下:

<?php                     

$a = 0; 

for($j=0; $j<count($ordCounts) ;$j++)   
{
    $orderDate = $ordCounts[$j]['carts']['order_date'];          
    $currentDate = $dateTime;        
    $diff = strtotime($currentDate) - strtotime($orderDate);         
    $hour = $diff/(60*60);                             
    if($hour>24)  
    {
        $a++;           
    }
} 

echo $a; 

?>

2 个答案:

答案 0 :(得分:2)

beforeRender()

中创建AppController方法
public function beforeRender(){
    parent::beforeRender();
    //here your code
    $this->set('a',$a);
}

$a变量将在模板中提供

答案 1 :(得分:0)

你可以创建一个上述代码的函数来计算AppController中出现的这个

function countOccurences(){
    $a = 0; 
    for($j=0; $j<count($ordCounts) ;$j++)   
    {
        $orderDate = $ordCounts[$j]['carts']['order_date'];          
        $currentDate = $dateTime;        
        $diff = strtotime($currentDate) - strtotime($orderDate);         
        $hour = $diff/(60*60);                             
        if($hour>24)  
        {
            $a++;           
        }
    } 
    return $a;
}

然后在AppController中的beforeFilterMethod中调用此函数

function beforeFilter(){
    parent::beforeFilter();
    $count = $this->countOccurences();
    $this->set('count',$count);
}